Parallel
TAEF bietet einen Mechanismus zum Parallelen Ausführen von Tests über mehrere Prozessoren hinweg.
Parallelitätsgarantien
- Es werden niemals zwei Tests gleichzeitig ausgeführt, die nicht als parallelisierbar gekennzeichnet sind.
- Parallele Tests können gleichzeitig mit anderen parallelen und nicht parallelen Tests ausgeführt werden.
- Alle Modul-/Klassen-/Test-Setups und -Bereinigungen werden linear vor und nach dem jeweiligen Test im selben Prozess ausgeführt.
- Modul-/Klassensetup kann parallel für verschiedene Prozesse ausgeführt werden, wenn das Modul oder die Klasse mindestens einen parallelen Test enthält.
- Der parallele Ausführungsmodus ist mit dem Ausführungsmechanismus/inproc nicht kompatibel.
Markieren von Tests als parallelisierbar
Beispiel (systemeigener Code):
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(ParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"true")
END_TEST_METHOD()
};
Wie bei anderen allgemeinen Metadaten in TAEF kann dies auf Klassen- oder Modulebene angegeben werden. & wird von allen Tests übernommen, die in dieser Klasse oder diesem Modul enthalten sind. Um beispielsweise eine gesamte Assembly als parallelisierbar zu markieren, können Sie (außerhalb einer Klasse oder Test-Spezifikation) in einer in Ihre Test-DLL kompilierten CPP-Datei Folgendes tun:
BEGIN_MODULE()
MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()
Dieser breitere Bereich kann dann in kleineren Bereichen überschrieben werden, um Parallelität für bestimmte Testfälle oder Klassen wie folgt zu deaktivieren:
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(NonParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"false");
END_TEST_METHOD()
};
Die Einstellung, die der Testmethode am nächsten kommt (die Metadaten der Methode kommen ihr am nächsten, dann die Klasse, dann das Modul), wird verwendet, um zu entscheiden, ob dieser Test parallel mit anderen Tests ausgeführt wird.
Aktivieren von Parallelität an der Eingabeaufforderung
Parallele Ausführung ist ein Opt-In-Feature. Obwohl Tests als parallel gekennzeichnet sein können, führt TAEF die Tests weiterhin linear aus, sofern der parallele Ausführungsmodus nicht in der Eingabeaufforderung aktiviert wird:
te unittests\* /parallel