Tengo un banco de pruebas donde estoy cerrando la sesión del sistema en @After
y cerrando el navegador en @AfterClass
. Intento usar @Rule
para tomar una captura de pantalla de prueba fallida usando Selenium para cada método de prueba. Comprobé manualmente que @Rule
solo se ejecuta antes de cada @Before
, pero quiero configurarlo después de @Test
y antes de @After
. No pude encontrar una solución simple. Cualquier ayuda será apreciada.Aplicar '@Rule' después de cada '@Test' y antes de cada '@ After' en JUnit
public class MorgatgeCalculatorTest {
@Before
public void before(){
System.out.println("I am before");
}
@BeforeClass
public static void beforeclass(){
System.out.println("I am beforeclass");
}
@Test
public void test(){
System.out.println("I am Test");
}
@Test
public void test2(){
System.out.println("I am Test2");
}
@After
public void after(){
System.out.println("I am after");
}
@AfterClass
public static void afterclass(){
System.out.println("I am afterclass");
}
@Rule
ExpensiveExternalResource ExpensiveExternalResource = new ExpensiveExternalResource();
static class ExpensiveExternalResource implements MethodRule {
public ExpensiveExternalResource(){
System.out.println("I am rule");
}
@Override
public Statement apply(Statement arg0, FrameworkMethod arg1, Object arg2) {
// TODO Auto-generated method stub
return null;
}
}
La salida que estoy recibiendo es
I am beforeclass
I am rule
I am before
I am Test
I am after
I am rule
I am before
I am Test2
I am after
I am afterclass
He mencionado que solo quiero tomar capturas de pantalla solo cuando falla una prueba. No para todas las pruebas: D –
Gracioso. Solo estaba interesado en el pedido, así que en realidad tu pregunta era mi respuesta :) –
@ GáborLipták :) ¡Estoy contento! –