Condividi tramite


Isolamento test

TAEF supporta l'esecuzione di test in un processo isolato. È possibile controllare quando questi processi vengono sostituiti con l'opzione Dei metadati di IsolationLevel e della riga di comando. Ciò può essere utile per rilevare dipendenze di test non intenzionali o per ridurre l'impatto di un test di perdita.

L'elenco seguente mostra i valori possibili dell'opzione di metadati e riga di comando IsolationLevel e i relativi significati.

Nessuno
TAEF non isola alcun test.

Modulo
TAEF userà un host di processo separato per ogni DLL di test. Si tratta del valore predefinito.

Assemblea
Uguale al modulo

DLL
Uguale al modulo

Classe
TAEF userà un host di processo separato per ogni classe di test.

Metodo
TAEF userà un host di processo separato per ogni test. Se il test si trova all'interno di un gruppo di esecuzione, lo stesso host di processo verrà usato per l'intero gruppo di esecuzione.

Test
Uguale al metodo

Il valore dei metadati IsolationLevel usato è il metadati specificato più vicino al livello di test. Se l'opzione IsolationLevel della riga di comando è impostata anche, il valore usato è quello che fornisce l'isolamento più elevato.

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

Nell'esempio precedente vengono usati tre host di processo diversi: uno per MyTestClass1::MyTest1, uno per gli altri due metodi in MyTestClass1 e uno per MyTestClass2. Se l'utente deve aggiungere /IsolationLevel:Method alla riga di comando di te.exe, verranno usati cinque host di processo diversi: uno per ogni test.

Si noti che se un modulo, una classe o un test è espanso o basato sui metadati e deve essere isolato, ogni espansione dei metadati e/o dei dati è isolata. Ciò può essere impedito a livello di test eseguendo il test un membro di un gruppo di esecuzione.

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

In questo esempio vengono usati sei host di processo diversi. Ognuno dei tre valori di MyParameter1 è isolato e MyTest1 è isolato da MyTest2 e MyTest3. I tre valori di MyParameter2 non sono isolati poiché si trovano nello stesso gruppo di esecuzione.