2017-12-13 2 views
1

Ich arbeite am NUnit-Testprojekt und versuche, Testfälle parallel laufen zu lassen.Parallize NUnit-Testfälle niedriger als Test Fixierungslevel

Was ich bis jetzt gemacht habe, kann nur Testbefestigungen parallel laufen lassen. Es ist jedoch nicht genug und schafft Hunderte von Fixes ist mühsame Aufgaben und schwer zu pflegen.

Gibt es einen besseren Weg als ein Fixture für einen Testfall zu erstellen, wenn ich alle Fälle parallel ausführen möchte?

AssemplyInfo.cs

[assembly: Parallelizable(ParallelScope.Fixtures)] 
[assembly: LevelOfParallelism(12)] 

Test.cs

[TestFixture] 
[Parallelizable(ParallelScope.Fixtures)] 
+1

Natürlich müssen Sie sicherstellen, dass Ihre App mit gleichzeitigen Tests kompatibel ist. Wenn Sie nicht spotten (was den Zweck des Tests sowieso zunichtemacht), benötigt die AUT in der Regel eine Datenbank, in der Tests erwarten, dass sie sich in einem bekannten Zustand befindet. Concurrent Tests bricht das – MickyD

+0

Dies ist wahr. Ich hatte Probleme mit DB und API, aber alle waren gelöst. –

+0

Gut zu hören! :) – MickyD

Antwort

1

Wenn Sie alle Geräte parallel laufen zu lassen, müssen Sie nur das Attribut Baugruppenebene.

[assembly: Parallelizable(ParallelScope.All)] 

Sie können LevelOfParallelism hinzufügen, aber es ist besser, NUnit zu ermöglichen, den Wert zu setzen, basierend auf der Anzahl der Prozessoren Sie haben.

Sie möchten nur Parallelizable für Ihre Testklassen festlegen, wenn Sie etwas anderes als das globale Verhalten möchten.

Vor NUnit 3.8 wurden die Tests nur parallel bis zur Fixture-Ebene ausgeführt. Das parallele Ausführen von Testmethoden führte zu NUnit 3.8, aber ich würde empfehlen, direkt zu 3.9 zu wechseln, um einige Parallelisierungsfehler zu vermeiden, die durch die Änderung in 3.8 eingeführt wurden.

+0

Danke, Rob, ich möchte, dass es in Testfällen läuft, die niedriger sind als Fixes. –

+0

Mit NUnit 3.9 sollte das Assembly-Level-Attribut bis zur Methodenebene alles parallel ausführen. Siehst du das nicht? Dinge wie Console.WriteLine() sind gepuffert, also kein richtiger Hinweis auf Parallele. –

+0

Ich werde NUnit aktualisieren und es erneut versuchen und Ihnen mitteilen. Vielen Dank. –

Verwandte Themen