テストの分離
TAEF では、分離プロセスでのテストの実行がサポートされています。 これらのプロセスを IsolationLevel メタデータとコマンド ライン オプションに置き換えるタイミングを制御できます。 これは、意図しないテストの依存関係を検出したり、リーク テストの影響を軽減したりするのに役立ちます。
以下のリストは、IsolationLevel メタデータとコマンド ライン オプションが取り得る値と、それぞれの意味をまとめたものです。
None
TAEF はテストを分離しません。
モジュール
TAEF が、テスト DLL ごとに個別のプロセス ホストを使用します。 これが既定値です。
アセンブリ
Module と同じです。
DLL
Module と同じです。
クラス
TAEF が、テスト クラスごとに個別のプロセス ホストを使用します。
メソッド
TAEF が、テストごとに個別のプロセス ホストを使用します。 テストが実行グループ内にある場合は、実行グループ全体に同じプロセス ホストが使用されます。
テスト
Method と同じです。
使用される IsolationLevel メタデータ値は、テスト レベルに最も近く設定されたメタデータです。 コマンド ラインの IsolationLevel オプションも設定されている場合、使用される値は最大限に分離される値です。
BEGIN_MODULE()
MODULE_PROPERTY(L"IsolationLevel", L"Class")
END_MODULE()
class MyTestClass1
{
TEST_CLASS(MyTestClass1);
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
class MyTestClass2
{
TEST_CLASS(MyTestClass2);
TEST_METHOD(MyTest1);
TEST_METHOD(MyTest2);
};
上の例では、MyTestClass1::MyTest1 用、MyTestClass1 の他の 2 つのメソッド用、MyTestClass2 用という、3 つの異なるプロセス ホストが使用されています。 ユーザーが /IsolationLevel:Method を te.exe のコマンド ラインに追加すると、5 つの異なるプロセス ホスト (テストごとに 1 つ) が使用されます。
モジュール、クラス、またはテストがメタデータ展開またはデータ ドリブンであり、分離される場合は、それぞれのメタデータやデータ拡張が分離されます。 これを防ぐには、テストを実行グループのメンバーにします。
class MyTestClass3 :
{
BEGIN_TEST_CLASS(MyTestClass3)
TEST_CLASS_PROPERTY(L"Data:MyParameter1", L"{1, 2, 3}")
TEST_CLASS_PROPERTY(L"IsolationLevel", L"Class")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTest1)
TEST_METHOD_PROPERTY(L"Data:MyParameter2", L"{1, 2, 3}")
TEST_METHOD_PROPERTY(L"IsolationLevel", L"Method")
TEST_METHOD_PROPERTY(L"ExecutionGroup", L"MyExecutionGroup")
END_TEST_METHOD()
TEST_METHOD(MyTest2);
TEST_METHOD(MyTest3);
};
この例では、6 つの異なるプロセス ホストが使用されています。 MyParameter1 の 3 つの値はそれぞれ分離され、MyTest1 は MyTest2 と MyTest3 から分離されています。 MyParameter2 の 3 つの値は、同じ実行グループ内に存在するため、分離されていません。