visual unitarias unit tests test studio pruebas generate ejemplo basics visual-studio unit-testing

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:

  1. El ctor se llama antes de TestInitialize (no es sorprendente ya que este último es un método de instancia).
  2. Tienes acceso a TestContext en TestInitialize .
  3. Más escenarios de herencia se habilitan con TestInitialize : https://stackoverflow.com/a/8689398/67824 .
  4. 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 ).

Otras lecturas