Bagikan melalui


Isolasi Pengujian

TAEF mendukung menjalankan pengujian dalam proses yang terisolasi. Dimungkinkan untuk mengontrol kapan proses ini diganti dengan opsi metadata IsolationLevel dan baris perintah. Ini dapat berguna untuk mendeteksi dependensi pengujian yang tidak diinginkan atau untuk mengurangi dampak pengujian yang bocor.

Daftar berikut ini memperlihatkan nilai yang mungkin dari opsi metadata isolationLevel dan baris perintah serta maknanya.

Tidak
TAEF tidak akan mengisolasi pengujian apa pun.

Modul
TAEF akan menggunakan host proses terpisah untuk setiap DLL pengujian. Ini adalah nilai default.

Majelis
Sama seperti Modul

DLL
Sama seperti Modul

Kelas
TAEF akan menggunakan host proses terpisah untuk setiap kelas pengujian.

Metode
TAEF akan menggunakan host proses terpisah untuk setiap pengujian. Jika pengujian berada dalam grup eksekusi, host proses yang sama akan digunakan untuk seluruh grup eksekusi.

Tes
Sama seperti Metode

Nilai metadata IsolationLevel yang digunakan adalah metadata yang ditentukan paling dekat dengan tingkat pengujian. Jika opsi IsolationLevel baris perintah juga diatur, nilai yang digunakan adalah nilai yang menyediakan isolasi terbanyak.

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);
};

Dalam contoh di atas, tiga host proses yang berbeda digunakan: satu untuk MyTestClass1::MyTest1, satu untuk dua metode lainnya di MyTestClass1, dan satu untuk MyTestClass2. Jika pengguna menambahkan /IsolationLevel:Method ke baris perintah te.exe, lima host proses yang berbeda akan digunakan: satu untuk setiap pengujian.

Perhatikan bahwa jika modul, kelas, atau pengujian diperluas metadata atau berbasis data dan akan diisolasi, setiap metadata dan/atau ekspansi data diisolasi. Ini dapat dicegah pada tingkat pengujian dengan membuat pengujian menjadi anggota grup eksekusi.

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);
};

Dalam contoh ini, enam host proses yang berbeda digunakan. Masing-masing dari tiga nilai MyParameter1 terisolasi dan MyTest1 diisolasi dari MyTest2 dan MyTest3. Tiga nilai MyParameter2 tidak terisolasi karena berada dalam grup eksekusi yang sama.