Ich habe eine Testsuite, wo ich mich aus dem System in @After
abmelden und den Browser in @AfterClass
schließen. Ich versuche, @Rule
zu verwenden, um gescheitertes TestScreenshot unter Verwendung Selenium für jede Testmethode zu nehmen. Ich habe manuell überprüft, dass @Rule
nur vor jedem @Before
läuft, aber ich möchte es nach @Test
und vor @After
einrichten. Ich konnte keine einfache Lösung finden. Jede Hilfe wird geschätzt.Wenden Sie '@Rule' nach jedem '@Test' und vor jedem '@After' 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;
}
}
Der Ausgang ich immer bin, ist
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
Ich erwähnte ich will nur Screenshot nur wenn ein Test fehlschlagen. Nicht für jeden Test: D –
Lustig. Ich war nur an der Bestellung interessiert, also war deine Frage eigentlich meine Antwort :) –
@ GáborLipták :) Ich bin froh! –