Domanda veloce, sto usando il framework di test di Visual Studio per il test delle unità. Mi chiedo quale sia la differenza tra l'uso del costruttore per eseguire il lavoro di inizializzazione e l'avere un metodo con l'attributo [TestInitialize()]?Qual è la differenza tra l'utilizzo del costruttore nell'attributo VS Testing framework e TestInitialize()?
risposta
This post offre una panoramica dei diversi metodi. Come puoi vedere, il ctor viene chiamato immediatamente prima dello ClassInitialize
(solo una volta, ovviamente) e TestInitialize
.
Quindi, inserire le cose che richiedono il codice in nel metodo TestInitialize
. Tutto ciò che dovrebbe essere impostato prima dello ClassInitialize
va nel ctor.
Ovviamente, il contenuto di TestInitialize
verrà eseguito una volta prima di ogni test. Il metodo corrispondente per chiudere dopo ogni test è TestCleanup
. Per le classi, utilizzare ClassCleanup
. La stessa cosa esiste anche per gli assembly (AssemblyInitialize/Cleanup
).
Le tue prime due frasi non sono corretti. Il ctor viene chiamato prima di ogni test (che ottiene la sua istanza). 'ClassInitialize' è chiamato (una volta) prima di qualsiasi ctor (e quindi qualsiasi test) - questo è il motivo per cui deve essere statico! –
Questo ans non è giusto. @ OhadSchneider ha ragione –
@PingJin se sei d'accordo con me, potresti invitare la mia risposta ... :) –
Il ctor
di inizializzare l'oggetto.
TestInitialize
serve per inizializzare qualsiasi oggetto o dato necessario per eseguire il test.
Ma dato che l'oggetto che stai costruendo è una classe di test, sicuramente l'unica cosa che avresti inizializzato in quel costruttore sono oggetti o dati necessari per eseguire il test ... – bacar
Per chiarire, TestInitialize viene eseguito prima di ogni test, quindi se si inizializzano gli oggetti qui, verranno ricreati per ogni test. Questa è una buona pratica. Altrimenti, lo stesso oggetto sarebbe condiviso in tutti i test della classe, un grande test senza unità. –
Concettualmente sono gli stessi, poiché MSTest crea una nuova istanza della classe di test prima di ogni esecuzione del test. Tuttavia, tecnicamente ci sono alcune differenze:
- ctor è chiamato prima
TestInitialize
(non sorprende in quanto quest'ultimo è un metodo di istanza). - Hai accesso a
TestContext
inTestInitialize
. - Altri scenari di ereditarietà sono abilitati con
TestInitialize
: https://stackoverflow.com/a/8689398/67824. - È possibile assegnare i campi
readonly
nel ctor. Penso che sia abbastanza importante: https://stackoverflow.com/a/45270180/67824.
- 1. Qual è la differenza tra la libreria di assertion, il framework di testing e l'ambiente di testing in javascript?
- 2. Qual è la differenza tra Microsoft.NET \ Framework e Microsoft.NET \ Framework64?
- 3. Zend Framework: qual è la differenza tra partial e segnaposto
- 4. Qual è la differenza tra colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 5. Qual è la differenza tra {0} e +?
- 6. Qual è la differenza tra dict() e {}?
- 7. Qual è la differenza tra Verilog! e ~?
- 8. Qual è la differenza tra la versione v2.0.50727.3053 e v2.0.50727.3074 del framework .Net?
- 9. Qual è la differenza tra = e: =
- 10. Qual è la differenza tra? : e ||
- 11. qual è la differenza tra [[], []] e [[]] * 2
- 12. Qual è la differenza tra $ e $$?
- 13. Qual è la differenza tra ("") e (null)
- 14. Qual è la differenza tra " " e ""?
- 15. Qual è la differenza tra {0} e ""?
- 16. Qual è la differenza tra `##` e `hashCode`?
- 17. Qual è la differenza tra .ToString() e + ""
- 18. qual è la differenza tra:.! e: r !?
- 19. node.js vs. mete.js qual è la differenza?
- 20. Qual è la differenza tra Media e MediaTemplate in WIX?
- 21. Qual è la differenza tra informatica e ingegneria del software?
- 22. qual è la vera differenza tra lemmatization vs stemming
- 23. Qual è la differenza tra tutti questi framework audio?
- 24. Database vs tablespace, qual è la differenza?
- 25. Shim vs. Sham: Qual è la differenza?
- 26. Qual è la differenza tra "import" di framework e "linking" con framework?
- 27. qual è la differenza tra ResultSetExtractor vs Rowmapper?
- 28. Qual è la differenza tra Cassandra vs Oracle Coherence?
- 29. Qual è la differenza tra essere db_owner vs db_datareader/db_datawriter?
- 30. In MsBuild, qual è la differenza tra CreateProperty vs PropertyGroup?
possibile duplicato di [Si utilizza TestInitialize o il costruttore della classe di test per preparare ciascun test? e perché?] (http://stackoverflow.com/questions/334515/do-you-use-testinitialize-or-the-test-class-constructor-to-prepare-each-test-and) – mafu