Estoy trabajando en una aplicación que es principalmente de un solo subproceso, un solo usuario. Hay algunos subprocesos de trabajo aquí y allá, y solo usan clases y objetos seguros para subprocesos. Las pruebas unitarias en realidad están probando aquellas con múltiples hilos (creadas explícitamente para las pruebas), y se prueban bien.¿Hay alguna forma de ejecutar las pruebas unitarias de forma secuencial con MSTests?
Las pruebas de la unidad VSTS fallan cuando se prueban objetos comerciales y subsistemas que no son seguros para subprocesos. Está bien que no sean seguros para subprocesos, así es como la aplicación los usa.
Pero el enfoque 'un hilo por TestMethod' de las pruebas de MS nos mata. Tuve que implementar bloqueos de objetos en muchas clases de prueba unitarias solo para asegurarme de que las pruebas se ejecutan una tras otra (en realidad no me importa el orden, pero no puedo tener dos métodos de prueba que toquen el mismo objeto en al mismo tiempo).
El código es el siguiente:
[TestClass]
public class TestSomeObject
{
static object turnStile = new object();
...
[TestMethod]
public void T01_TestThis()
{
lock(turnStile)
{
.. actual test code
}
}
[TestMethod]
public void T02_TestThat()
{
lock(turnStile)
{
-- actual test code
}
}
}
¿Hay una manera mejor/más elegante para hacer la prueba de funcionamiento secuencial?
por lo que parece que está reutilizando una instancia de algún objeto en todas sus pruebas? – BlackTigerX
Sí, esencialmente. A veces es la base de datos, a veces es un singleton, se usa en la aplicación –
ya que afirma que es * unit-testing * por su etiqueta, debe burlarse/anular sus dependencias, especialmente las dependencias que no son seguras – mxmissile