So che la risposta potrebbe essere diversa per ogni framework di test. Ma per quelli che conosci, cosa dovrebbe accadere?Il metodo di installazione della suite di test viene eseguito una volta per ciascun test o solo una volta per tutte?
risposta
In MSTest avete TestInitializeAttribute
Quando viene eseguito in un test di carico, il metodo contrassegnato con questo attributo verrà eseguito una volta per ogni iterazione utente virtuale nel test. Se è necessario eseguire le operazioni di inizializzazione una volta, che si applicano all'intero test, utilizzare ClassInitializeAttribute.
AssemblyInitializeAttribute
viene eseguito una volta per tutti i test in tutte le classi.
In NUnit, si ha TestFixtureSetUp
che viene eseguito solo una volta prima dell'esecuzione di tutti i test nell'attrezzatura e SetUp
che viene eseguito prima dell'esecuzione di ciascun metodo di prova.
Questo naturalmente dipende dal framework e per le risposte concrete a questo si dovrebbe verificare la documentazione pertinente.
I metodi di impostazione per i test o le fixture sono utili, ma non devono essere utilizzati. Se i test unitari hanno complex set up methods, si potrebbe obiettare che sono più test di integrazione, e quindi dovrebbero essere sottoposti a refactoring. Un set di test complesso è un odore di codice. D'altra parte, impostare i metodi usati con saggezza può ridurre la duplicazione e rendere i test più leggibili e mantenibili.
In junit4 sono disponibili annotazioni per contrassegnare entrambi i tipi di metodi di installazione/rimozione. Ecco il sommario:
- eseguire l'installazione prima di ogni suite di test uso
@BeforeClass
- esecuzione abbattere dopo ogni test suite uso
@AfterClass
- eseguire l'installazione prima di ogni metodo di prova nel vostro uso privato
@Before
- lacrima in esecuzione dopo ogni metodo di prova nella suite utilizzare
@After
- 1. Discussione viene eseguito solo una volta
- 2. setInterval callback viene eseguito solo una volta
- 3. setTimeout viene eseguito solo una volta?
- 4. Esecuzione di un metodo solo una volta all'inizio prima dell'esecuzione di qualsiasi test in PyUnit
- 5. Gradle esegue solo una suite di test
- 6. PHPUnit: filtro solo per una suite di test
- 7. Come popolare il database solo una volta prima dei metodi @Test nel test di primavera?
- 8. JS setInterval eseguito solo una volta
- 9. Esegui setUp solo una volta
- 10. Il metodo WebSecurity.InitializeDatabaseConnection può essere chiamato solo una volta
- 11. requestAccessToEntityType - una volta o tutte le volte?
- 12. Esiste una suite di test per numpy/scipy?
- 13. Perché run() viene chiamato solo una volta?
- 14. Come eseguire il codice di configurazione solo una volta in un test xUnit.net
- 15. jQuery - Solo una volta
- 16. È possibile inizializzare l'apparecchio solo una volta e usarlo in più casi di test?
- 17. Perché questo viene aggiunto solo una volta?
- 18. Visualizzazioni indicizzate e join di sinistra una volta per tutte
- 19. Gulp Watch eseguito una sola volta
- 20. MSTest ClassInitialize una volta per l'intera classe
- 21. Rendimento solo una volta per iterazione
- 22. Chiama glewInit una volta per ogni contesto di rendering? o esattamente una volta per l'intera app?
- 23. come incrementare il valore del campo ogni volta che viene eseguito il test del selenio?
- 24. .replaceWith() funziona solo una volta
- 25. Come si esegue il codice una sola volta e solo una volta in Swift?
- 26. view.getDrawingCache() funziona solo una volta
- 27. Come eseguire una nuova installazione dell'applicazione ogni volta che vengono eseguiti i test di unità?
- 28. Metodo di inizializzazione test globale per MSTest
- 29. perl test suite per API
- 30. pezzo di codice che viene chiamato solo una volta: merita il proprio metodo?