測試隔離
TAEF 支援在隔離進程中執行測試。 您可以控制這些進程何時會取代為 IsolationLevel 中繼資料和命令列選項。 這可用於偵測非預期的測試相依性,或降低外泄測試的影響。
下列清單顯示 IsolationLevel 中繼資料和命令列選項的可能值及其意義。
沒有
TAEF 不會隔離任何測試。
模組
TAEF 會針對每個測試 DLL 使用不同的進程主機。 這是預設值。
裝配
與模組相同
Dll
與模組相同
類
TAEF 會針對每個測試類別使用不同的進程主機。
方法
TAEF 會針對每個測試使用不同的進程主機。 如果測試位於執行群組內,則會將相同的進程主機用於整個執行群組。
測試
與方法相同
使用的 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 中的其他兩種方法,另一個用於 MyTestClass2。 如果使用者要將 /IsolationLevel:方法新增至te.exe命令列,則會使用五個不同的進程主機:每個測試各有一個。
請注意,如果模組、類別或測試是 中繼資料擴充 或 資料驅動 ,而且要隔離,則會隔離每個中繼資料和/或資料擴充。 這可以藉由讓測試成為 執行群組的成員,在測試層級上防止。
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);
};
在此範例中,會使用六個不同的進程主機。 MyParameter1 的三個值都是隔離的,而 MyTest1 則與 MyTest2 和 MyTest3 隔離。 MyParameter2 的三個值不會隔離,因為它們位於相同的執行群組中。