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
risposta
È 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 classeTTestSuite
, 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.
È 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.
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:
Molto meno gingillarsi che con la via di David, e si può diffondere le definizioni di gruppo attraverso le unità disparate.
- 1. Posso scrivere test "parametrizzati" in DUnit
- 2. iOS 6 view hierarchia incubo
- 3. Test DUnit GUI: Posso forzare "Applicazione" su un "modulo" diverso?
- 4. Che tipo di casi di test possiamo scrivere usando DUnit?
- 5. DUnit: "Global" SetUp e TearDown
- 6. Come posso personalizzare le classi caso di test DUnit generate dalla procedura guidata Caso di test?
- 7. Ottenere statistiche di copertura di DUnit Test utilizzando FinalBuilder e AQTime
- 8. Posso chiamare ToolsAPI dal codice in DUnit GUITestrunner?
- 9. Dove posso trovare una introduzione all'uso di DUnit con Delphi 2007 o versioni successive?
- 10. Come posso abilitare il tracciamento della perdita di memoria con FastMM in DUnit?
- 11. Server HTTP per i test delle unità in Delphi
- 12. Unit test di un'applicazione Firemonkey
- 13. Come avviare il test vecchio e nuovo del test unitario?
- 14. Cronologia test test Intellij
- 15. Test single test Karma
- 16. Test di unità a sorgente singola per Free Pascal e Delphi
- 17. Test unitari o test funzionali?
- 18. Test super, test REST API
- 19. Test di sistema vs Test di accettazione - Differenza nei test
- 20. Qual è la differenza tra ($ test) = (@test); e $ test = @ test; in Perl?
- 21. Test unitario in QTestLib - esecuzione di test/test singoli in classe/tutti i test
- 22. Test unità Laravel - Esegui tutti i test
- 23. Boost Test Vs Google Test Framework
- 24. unit test e test funzionali in CodeIgniter
- 25. Test unità di base e test unità
- 26. Test unitari e test di accettazione
- 27. Test unità separati e test di integrazione
- 28. Come saltare determinati test con Test :: Unità
- 29. Test WeakReference
- 30. Test delle unità App Android su Eclipse + jUnit - Esecuzione test fallita: test eseguito incompleto. 1 test previsti, ricevuti 0
Funziona, grazie. – kludg
@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. –
@ Marjan +1 è bello, non lo sapevo. Ho la sensazione che ci sia molto potere in DUnit che non è ampiamente conosciuto. –