Ho una suite di test in cui mi disconnetto dal sistema in @After
e chiude il browser in @AfterClass
. Sto cercando di utilizzare @Rule
per eseguire uno screenshot di prova non riuscito utilizzando il selenio per ogni metodo di prova. Ho controllato manualmente che @Rule
viene eseguito solo prima di ogni @Before
ma desidero impostarlo dopo @Test
e prima di @After
. Non sono riuscito a trovare una soluzione semplice. Qualsiasi aiuto sarà apprezzato.Applicare '@Rule' dopo ogni '@Test' e prima di ogni '@Dopo' in 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;
}
}
L'uscita sto ottenendo è
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
Ho detto che voglio solo scattare una schermata solo quando un test fallisce. Non per ogni test: D –
Divertente. Mi interessava solo l'ordine, quindi in realtà la tua domanda era la mia risposta :) –
@ GáborLipták :) Sono contento! –