2011-08-31 7 views
8

Estoy creando pruebas web en Selenium usando MSTest y quiero tomar una captura de pantalla cada vez que falla una prueba, pero no quiero tomar una cada vez que pasa una prueba .En MSTest cómo verificar si pasó la última prueba (en TestCleanup)

Lo que quería hacer es poner una función de captura de pantalla dentro del método [TestCleanup] y ejecutarlo si la prueba falló pero no si pasó la prueba. ¿Pero cómo puedo averiguar si pasó una última prueba?

Actualmente estoy haciendo bool = false en [TestInitialize] y bool = true si la prueba se ejecuta.

Pero no creo que sea una muy buena solución.

Así que, básicamente, estoy buscando una manera de detectar si la última prueba es verdadera/falsa al hacer [TestCleanup].

Respuesta

2

La respuesta por @MartinMussmann es correcta, pero incompleta. Para acceder a la "TestContext" object lo que necesita para asegurarse de que declare como una propiedad en su TestClass:

[TestClass] 
public class BaseTest 
{ 
    public abstract TestContext TestContext { get; } 

    [TestCleanup] 
    public void TestCleanup() 
    { 
     if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
     { 
      // some code 
     } 
    } 
} 

Esto también se menciona en el following post.

+0

Correcto, pero el fragmento de código me dio un error "TestContext debe ser de tipo TestContext, debe ser no estático, público y no debe ser de solo lectura". Así que cambié la propiedad a: 'public TestContext TestContext {get; conjunto; } ' – LambdaCruiser

+0

@LambdaCruiser Correcto, he actualizado la respuesta con esa sugerencia –

11

Solución

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
{ 
    // some code 
} 
Cuestiones relacionadas