Estoy usando MSTEST en Visual Studio 2008. ¿Cómo puedo hacer que cada método de prueba de una determinada clase de prueba actúe como si fuera la primera prueba que se ejecuta para que se restablezca todo el estado global antes de ejecutar cada prueba? No quiero para limpiar de manera explícita el mundo a través de TestInitialize, ClassInitialize, AssemblyInitialize, etc. Por ejemplo:¿Cómo forzar a MSTEST TestMethod a restablecer todos los singleton/estáticos antes de ejecutar?
[TestClass]
public class MyClassTests
{
[TestMethod]
public void Test1()
{
// The "Instance" property creates a new instance of "SomeSingleton"
// if it hasn't been created before.
var i1 = SomeSingleton.Instance;
...
}
[TestMethod]
public void Test2()
{
// When I select "Test1" and "Test2" to run, I'd like Test2
// to have a new AppDomain feel so that the static variable inside
// of "SomeSingleton" is reset (it was previously set in Test1) on
// the call to ".Instance"
var i2 = SomeSingleton.Instance;
// some code
}
Aunque un similar question apareció sobre este tema, sólo se aclaró que las pruebas no se ejecutan en paralelo. Me doy cuenta de que las pruebas se ejecutan en serie, pero no parece haber una manera de forzar explícitamente un nuevo dominio de aplicación para cada método (o algo equivalente a borrar todo el estado).
Idealmente, me gustaría especificar este comportamiento solo para un subconjunto pequeño de las pruebas de mi unidad para no tener que pagar la penalización de una nueva creación de AppDomain para las pruebas que no se preocupan por el estado global (la gran mayoría de mis pruebas).
¿Tiene un ejemplo de código Jeff? – DevDave
Sí, una muestra de código por favor – Harindaka