2011-11-17 8 views
5

es decir, para tener el método decorado con el atributo ClassCleanup ejecutado una vez inmediatamente después de todas las pruebas en una clase de prueba? (como TestFixtureTearDown en NUnit). ¿Alguna solución?¿Es posible tener ClassCleanup determinista en la prueba de unidad MSTest/VS?

La alternativa de incorporar esta instalación/desmontaje pesado en TestInitialize y TestCleanup simplemente aumentaría los tiempos de ejecución de la prueba.

Estaba comparando los dos durante la última semana. (Esto es lo que he encontrado NUnit vs MSTest. No tienen un montón de tiempo de vuelo en MSTest, por lo que si he cometido un error, por favor no dude en enviar correcciones como comentarios ..)

Este artículo en particular es un sensacional hasta donde me concierne. Lea la primera sección de la publicación del blog en caso de que desee obtener más detalles.

+0

¿Quiere decir NUnit un paréntesis en el de la segunda línea? -xUnit funciona usando Dispose –

+0

Quise decir la familia xUnit; pero corregido de todos modos para evitar confusiones con xUnit.net – Gishu

Respuesta

0

Según MSDN ClassCleanup se ejecuta de la siguiente manera:

Para las clases

ClassInitialize y ClassCleanup se llaman inmediatamente después de su clase se carga y justo antes de descargar su clase.

Cuando lo leí, eso significa que las pruebas de la clase se han ejecutado.

+0

Se agregó una nota de comunidad a la página vs2010. Eche un vistazo a la primera sección de la publicación vinculada en la pregunta. Lo que la página de MSDN no dice es que "las limpiezas de clase se ejecutan en algún momento en el futuro como un lote.Se pueden ejecutar otras clases de prueba entre la última prueba y ClassCleanup de la clase n. ° 1. " – Gishu

+0

Ok. No me di cuenta. Mi respuesta no es buena, entonces :-) –

1

ClassInitialize y ClassCleanup se llaman justo después de que se cargue su clase y justo antes de que se descargue su clase.

Es cierto, pero las clases se descargan en bloque después de que todas las pruebas hayan terminado de ejecutarse.

E.g.

ClassInitialize1
TestInitialize1
TestMethod11
TestCleanup1
TestInitialize1
TestMethod12
TestCleanup1
ClassInitialize2
TestInitialize2
TestMethod21
TestCleanup2
TestInitialize2
TestMethod22
TestCleanup2
TestInitialize2
TestMethod23
TestCleanup2
ClassCleanup1
ClassCleanup2

Cuestiones relacionadas