Parallel
TAEF には、複数のプロセッサ間でテストを並列で実行するメカニズムが用意されています。
並列処理の保証
- 並列化可能としてマークされていない 2 つのテストが、同時に実行されることはありません。
- 並列テストは、他の並列テストおよび非並列テストの両方と同時に実行できます。
- すべてのモジュール/クラス/テストのセットアップとクリーンアップは、同じプロセスで関連するテストの前後に直線的に実行されます。
- モジュールまたはクラスに少なくとも 1 つの並列テストが含まれている場合、モジュール/クラスのセットアップは、異なるプロセスで並列で実行できます。
- 並列実行モードは、"/inproc" 実行メカニズムと互換性がありません。
テストを並列化可能としてマークする
例 (ネイティブ コード):
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(ParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"true")
END_TEST_METHOD()
};
これは、TAEF の他の一般的なメタデータと同様に、クラスまたはモジュール レベルで指定できます。また、そのクラスまたはモジュールに含まれるすべてのテストによって継承されます。 たとえば、アセンブリ全体を並列化可能としてマークするには、テスト DLL にコンパイルされた cpp ファイルで (クラスまたはテスト仕様の外部で) 次の操作を行います。
BEGIN_MODULE()
MODULE_PROPERTY(L"Parallel", L"true");
END_MODULE()
この広いスコープを、次のようにより小さなスコープでオーバーライドして、特定のテスト ケースまたはクラスの並列処理を無効にすることができます。
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(NonParallelTest)
TEST_METHOD_PROPERTY(L"Parallel", L"false");
END_TEST_METHOD()
};
テスト メソッドに最も近い設定 (メソッド メタデータ、クラス、モジュールの順に近い) を使用して、このテストを他のテストと並行して実行するかどうかが決定されます。
コマンド プロンプトで並列処理を有効にする
並列実行はオプトイン機能です。 テストを並列としてマークできますが、コマンド プロンプトで並列実行モードが有効になっていない限り、TAEF は引き続き直線的にテストを実行します。
te unittests\* /parallel