visual unit tutorial test studio net mstest

mstest - unit - ping ms test



¿Es posible ejecutar código una vez antes de ejecutar todas las pruebas? (3)

FWIW, puede utilizar el atributo AssemblyInitialize para ejecutar código antes de que se ejecuten todas las pruebas unitarias en un ensamblaje:

[TestClass] public class SetupAssemblyInitializer { [AssemblyInitialize] public static void AssemblyInit(TestContext context) { // Initalization code goes here } }

Si tiene más de un ensamblaje de prueba unitaria, no conozco nada que abarque más de un ensamblaje.

Hasta donde yo sé, esto es lo más cercano que se puede llegar a un equivalente principal.

Tenga en cuenta que el método AssemblyInitialize -decorated debe estar en una clase TestClass que contenga al menos un método TestClass ; de lo contrario, no se ejecutará.

Básicamente, me gustaría decirle a MSTest que ejecute un poco de código antes de iniciar una serie de pruebas, esencialmente lo que me gustaría hacer es lo mismo que pegar un código en Main() .

La razón por la que me gustaría hacer esto es que me gustaría hacer un poco de registro con log4net durante mis ejecuciones de prueba de integración. No puedo usar el log4net.Config.XmlConfigurator ensamblado log4net.Config.XmlConfigurator ya que cuando lo lee en mi ensamblaje de prueba ya ha llamado a LoggerManager . La documentación recomienda configurar log4net explícitamente en el punto de entrada del código, pero ¿dónde está eso en mis pruebas?

Necesito poder ejecutar mis pruebas en TestDriven.NET y MSTest runner.


Para completar, estas son las opciones de "ejecutar código antes" para MSTest:

  • Utilice [AssemblyInitialize] para ejecutar el código una vez por ensamblaje, antes de ejecutar cualquier prueba en ese ensamblaje.
  • Utilice [ClassInitialize] para ejecutar código una vez por clase, antes de cualquier prueba en la clase donde se define el método.
  • Utilice [TestInitialize] para ejecutar el código antes de cada prueba en la clase donde se define el método.

Veo esto en el encabezado de MS Test.

// Use ClassInitialize to run code before running the first test in the class //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) { }

Esto se ejecutaría antes de las pruebas en una clase.

Parece que quieres ejecutar algo antes de todas las pruebas.

También existe la opción de script de configuración en la configuración de ejecución de prueba.