Ich möchte parametrisierte Tests von mehreren Baugruppen parallel mit dem NUnit 3 Console Runner ausführen können. Der Schlüssel ist, dass ich die statischen Initialisierer parallel laufen lassen möchte (der langsame Teil der Tests).Führen Sie NUnit3-Tests parallel von mehreren Baugruppen aus Konsolen Runner aus
Ich kann dies mit dem ReSharper 10 Test Runner in VisualStudio arbeiten. Wenn ich das gleiche Projekt in der NUnit 3-Konsole ausführen, werden die statischen Initialisierer nicht parallel ausgeführt.
Ich habe eine einfache Komponententestlösung erstellt, um das Problem zu reproduzieren. Es gibt zwei Projekte. Jedes Projekt hat eine Testklasse, die wie die folgende Klasse aussieht. Ich habe die Protokollierung hinzugefügt, um zu zeigen, dass die Tests nicht parallel vom Konsolen-Runner ausgeführt werden.
[TestFixture]
public class UnitTest1
{
public static IEnumerable Test1Static
{
get
{
Console.WriteLine($"before sleep 1 - {DateTime.Now}");
Thread.Sleep(12000);
Console.WriteLine($"after sleep 1 - {DateTime.Now}");
return new List<bool> { true, true };
}
}
[Test, TestCaseSource(nameof(Test1Static))]
public void TestMethod1(bool tc)
{
Assert.IsTrue(tc);
}
}
Console runner Ergebnisse:
C:\dev>"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" "C:\Users\username\Documents\Visual Studio 2015\Projects\testn
unit1\UnitTestProject1\bin\Debug\UnitTestProject1.dll" "C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProjec
t2\bin\Debug\UnitTestProject2.dll"
NUnit Console Runner 3.2.0
Copyright (C) 2016 Charlie Poole
Runtime Environment
OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
CLR Version: 4.0.30319.42000
Test Files
C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProject1\bin\Debug\UnitTestProject1.dll
C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProject2\bin\Debug\UnitTestProject2.dll
before sleep 1 - 4/6/2016 3:13:34 PM
after sleep 1 - 4/6/2016 3:13:46 PM
before sleep 2 - 4/6/2016 3:13:47 PM
after sleep 2 - 4/6/2016 3:13:59 PM
Run Settings
WorkDirectory: C:\dev
ImageRuntimeVersion: 4.0.30319
ImageTargetFrameworkName: .NETFramework,Version=v4.5.2
ImageRequiresX86: False
ImageRequiresDefaultAppDomainAssemblyResolver: False
NumberOfTestWorkers: 8
Test Run Summary
Overall result: Passed
Ich erhalte eine Fehlermeldung "Der Wert 'Parallel' ist nicht gültig für die Option '--process'". Basierend auf https://github.com/nunit/docs/wiki/Console-Command-Line habe ich versucht "--process: Multiple" zu verwenden. Dadurch konnten die Tests ausgeführt werden, aber ich habe das gleiche Ergebnis wie ohne diese Option. Ich bin in der Lage zu beweisen, dass die Konsole Runner Testfälle parallel läuft, es läuft nur nicht die statischen Initialisierer für jede Baugruppe parallel. – rsideb
Sorry, mein Fehler. Ich meinte Mehrfaches. Zwei Assemblys werden gleichzeitig ausgeführt. Wenn die statische Initialisierung nicht von einer externen Ressource abhängig ist, würde ich erwarten, dass sie parallel läuft. Wenn nicht, möchten Sie vielleicht ein Problem mit einem einfachen Retro-Fall einreichen. – Charlie