visual-studio - unitarias - visual studio generate unit tests
¿Cuál es la diferencia entre usar el constructor en el marco de prueba de VS vs. el atributo TestInitialize()? (3)
Conceptualmente son iguales, 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:
- El ctor se llama antes de
TestInitialize
(no es sorprendente ya que este último es un método de instancia). - Tienes acceso a
TestContext
enTestInitialize
. - Más escenarios de herencia se habilitan con
TestInitialize
: https://stackoverflow.com/a/8689398/67824 . - Puede asignar campos de
readonly
en el ctor. Creo que es bastante importante: https://stackoverflow.com/a/45270180/67824 .
Pregunta rápida, estoy usando el marco de pruebas de Visual Studio para pruebas unitarias. ¿Solo se pregunta cuál es la diferencia entre usar el constructor para realizar el trabajo de inicialización y tener un método con el atributo [TestInitialize ()]?
El ctor
es para inicializar el objeto.
TestInitialize
es para inicializar cualquier objeto o datos necesarios para ejecutar la prueba.
Esta publicación da una visión general de los diferentes métodos. Como puede ver, se llama al ctor inmediatamente antes de ClassInitialize
(solo una vez, por supuesto) y TestInitialize
.
Así que ponga cosas que requieran código en ClassInitialize
en su método TestInitialize
. Todo lo que se debe configurar antes de que ClassInitialize
entre en el ctor.
Obviamente, el contenido de 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
).