2012-01-16 10 views
13

Attualmente sto usando la gerarchia di test a 2 livelli in DUnit (Progetto Test -> Test Case -> Metodo di test, vedi esempio sotto). È possibile introdurre il 3 ° livello o anche più livelli?DUnit test hierarchia

DUnit Example

risposta

9

È possibile utilizzare suite di test per creare il maggior numero di livelli di nidificazione come volete. Il documentation offre il seguente esempio:

L'unità TestFramework espone la classe TTestSuite, la classe che implementa suite di test, in modo da poter creare delle gerarchie di test utilizzando più codice esplicito:

La seguente funzione, UnitTests , crea una suite di test e aggiunge le classi di test due ad esso:

function UnitTests: ITestSuite; 
var 
    ATestSuite: TTestSuite; 
begin 
    ATestSuite := TTestSuite.create('Some trivial tests'); 
    ATestSuite.addTest(TTestArithmetic.Suite); 
    ATestSuite.addTest(TTestStringlist.Suite); 
    Result := ATestSuite; 
end; 

un altro modo per implementare la funzione sopra sarebbe:

function UnitTests: ITestSuite; 
begin 
    Result := TTestSuite.Create(
    'Some trivial tests', 
    [TTestArithmetic.Suite, TTestStringlist.Suite] 
); 
end; 

Nell'esempio precedente, il costruttore TTestSuite aggiunge le prove nell'array passato al interno.

È possibile registrare un suite di test creato in uno qualsiasi dei modi di cui sopra dal utilizzando la stessa chiamata si utilizza per registrare i singoli casi di test:

initialization  
    RegisterTest('Simple Test', UnitTests); 
end. 

Quando viene eseguito con GUITestRunner, si vedrà la nuova gerarchia.

+0

Funziona, grazie. – kludg

+6

@Serg È inoltre possibile aggiungere punti nel nome sotto il quale si registrano i test e DUnit aggiungerà un livello per punto. Ad esempio, quando si esegue 'RegisterTest ('Simple.Test', UnitTests);' Creerà Simple come nodo e Test come sottonodo di quello nella gerarchia di test. Funzionalità molto bella per raggruppare i test in diverse unità con lo stesso nome funzionale. –

+0

@ Marjan +1 è bello, non lo sapevo. Ho la sensazione che ci sia molto potere in DUnit che non è ampiamente conosciuto. –

3

È possibile raggruppare test correlati in suite di test, che possono essere nidificate.

Se si desidera eseguire in fase di esecuzione, controllare il mio "Open Component Test Framework (OpenCTF)" a sourceforge.

11

Costruisco una gerarchia inserendo i backslash in `SuitePath '. Per esempio:

initialization 

    RegisterTests('Group1\Group2', [TExampleTests1.Suite, 
            TExampleTests2.Suite]); 

    RegisterTests('Group1\Group3', [TExampleTests3.Suite, 
            TExampleTests4.Suite]); 
end. 

Alla fine ottengo qualcosa di simile:

Example DUnit Test Hierarchy

Molto meno gingillarsi che con la via di David, e si può diffondere le definizioni di gruppo attraverso le unità disparate.

Problemi correlati