2012-08-26 41 views
29

Tengo curiosidad de por qué la configuración del dispositivo debe ser estática? Me parece más intuitivo tener variables de instancia por accesorio que compartan la vida útil del accesorio.¿Por qué un método ClassInitialize debe ser estático?

Sí, estos se pueden inicializar en el constructor, pero supongo que están fuera del control del corrector de prueba.

¿Qué requisitos de diseño o filosofías determinaron que el método de instalación debería ser estático?

Respuesta

38

El método con el atributo ClassInitialize se ejecuta una vez para todas las pruebas de la clase. Se crea una instancia de la clase cada vez que se ejecuta una prueba, por lo que debe ser estática para poder ejecutarse solo una vez.

Si desea inicializar para cada prueba, puede usar el atributo TestInitialize, que se ejecutará siempre que se cree una nueva instancia de la clase (antes de ejecutar una prueba).

Si necesitas más información, puedes echar un vistazo:

That Pesky MSTest Execution Ordering

+11

Gracias, yo no sabía una instancia fue creada para cada prueba. – ProfK

+5

No creo que el método tenga que ser estático para ejecutarse solo una vez. El marco de prueba está inicializando y ejecutando las clases de prueba correctas. Podría llamar fácilmente a un método no estático antes y después de ejecutar todos los métodos de prueba. – d512

+0

Si no fuera estático, la inicialización no se podría compartir con todas las instancias de prueba. Es decir. si necesita inicializar un servicio simulado utilizado por todas las pruebas. – user3285954

Cuestiones relacionadas