Pregunta rápida, estoy usando el marco de prueba de Visual Studio para pruebas unitarias. Solo me pregunto ¿cuál es la diferencia entre usar el constructor para hacer un trabajo de inicialización o tener un método con el atributo [TestInitialize()]?¿Cuál es la diferencia entre usar el constructor en el framework VS Testing vs. el atributo TestInitialize()?
Respuesta
This post ofrece una descripción general de los diferentes métodos. Como puede ver, el ctor se llama inmediatamente antes del ClassInitialize
(solo una vez, por supuesto) y TestInitialize
.
Ponga las cosas que requieren código en ClassInitialize
en su método TestInitialize
. Todo lo que debe configurarse antes de ClassInitialize
va en el ctor.
Obviamente, el contenido TestInitialize
se ejecutará una vez antes de cada prueba. El método correspondiente para cerrar después de cada prueba es TestCleanup
. Para las clases, use ClassCleanup
. Lo mismo existe para los ensamblajes también (AssemblyInitialize/Cleanup
).
Tus dos primeras oraciones son incorrectos El ctor se llama antes de cada prueba (que obtiene su propia instancia). 'ClassInitialize' se llama (una vez) antes de cualquier ctor (y por lo tanto cualquier prueba) - ¡por eso tiene que ser estático! –
Esta ans no es correcta. @ OhadSchneider's está bien –
@PingJin si está de acuerdo conmigo, podría votar mi respuesta ... :) –
El ctor
es para inicializar el objeto.
TestInitialize
es para inicializar cualquier objeto o datos necesarios para ejecutar la prueba.
Pero dado que el objeto que está construyendo es una clase de prueba, seguramente lo único que estaría inicializando en ese constructor son objetos o datos necesarios para ejecutar la prueba ... – bacar
Para aclarar, TestInitialize se ejecuta antes de cada prueba, por lo que si inicializa los objetos aquí, se volverán a crear para cada prueba. Esta es una buena práctica. De lo contrario, el mismo objeto se compartiría en todas las pruebas de la clase, un gran no-no en las pruebas unitarias. –
Conceptualmente son lo mismo, ya que MSTest crea una nueva instancia de su clase de prueba antes de cada ejecución de prueba. Sin embargo, técnicamente hay algunas diferencias:
- La Héctor se llama antes de
TestInitialize
(no es de extrañar ya que este último es un método de instancia). - Tiene acceso a
TestContext
enTestInitialize
. - Se habilitan más escenarios de herencia con
TestInitialize
: https://stackoverflow.com/a/8689398/67824. - Puede asignar
readonly
campos en el ctor. Creo que es bastante importante: https://stackoverflow.com/a/45270180/67824.
- 1. ¿Cuál es la diferencia entre() vs [] vs {}?
- 2. Cuál es la diferencia entre colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 3. ¿Cuál es la diferencia entre el encuadernado dinámico Vs el tipado dinámico en el Objetivo C
- 4. EQU vs DC.B. ¿Cuál es la diferencia?
- 5. UI testing vs unit testing
- 6. ¿Cuál es la diferencia entre Solr vs Websolr?
- 7. JIT vs NGen: ¿cuál es la diferencia?
- 8. ¿Cuál es la diferencia entre el
- 9. ¿Cuál es la diferencia entre "git reset" vs "git rebase"?
- 10. ¿Cuál es la diferencia entre Selenium's Remote Control vs WebDriver?
- 11. CATALINA_OPTS vs JAVA_OPTS - ¿Cuál es la diferencia?
- 12. Char.IsDigit() vs Char.IsNumber(), ¿cuál es la diferencia?
- 13. SET vs. SELECT - ¿Cuál es la diferencia?
- 14. ¿Cuál es la diferencia entre Python vs Jython vs IronPython vs wxPython?
- 15. ¿Existen diferencias reales entre NUnit y el Unit Testing Framework (VS 2008) de Microsoft?
- 16. ¿cuál es la diferencia entre ResultSetExtractor vs Rowmapper?
- 17. ¿Cuál es la diferencia entre process.cwd() vs __dirname?
- 18. ¿Cuál es la diferencia entre "origen maestro" vs "origen/maestro"
- 19. Cuál es la diferencia entre String (value) vs value.toString()
- 20. ¿Cuál es la diferencia entre gets.chomp() vs. STDIN.gets.chomp()?
- 21. ¿Cuál es la diferencia entre X = X ++; vs X ++ ;?
- 22. ¿Cuál es la diferencia entre Cassandra vs Oracle Coherence?
- 23. ¿Cuál es la diferencia entre Console.WriteLine() vs Debug.WriteLine()?
- 24. ¿Cuál es la diferencia entre html.AttributeEncode vs html.Encode?
- 25. ¿Cuál es la diferencia entre ser db_owner vs. db_datareader/db_datawriter?
- 26. Mysql: ¿Cuál es la diferencia entre "slow_query_log" vs "log_slow_queries"
- 27. Python - Cuándo usar el archivo vs abrir
- 28. ¿Cuál es la diferencia entre crear instancias en el campo e instanciar en el constructor?
- 29. node.js vs. meteor.js ¿cuál es la diferencia?
- 30. Integration vs Unit Testing
posible duplicado de [¿Utiliza TestInitialize o el constructor de la clase de prueba para preparar cada prueba? y por qué?] (http://stackoverflow.com/questions/334515/do-you-use-testinitialize-or-the-test-class-constructor-to-prepare-each-test-and) – mafu