Ich möchte Tests mit der Erweiterung von ParentRunner
ausführen. Ich mache das zum Lernen, kein bestimmtes Szenario. Ich habe die Klassen darunter und darunter gibt es auch die Ausgabe. Ich verstehe ein paar Dinge nicht: 1. Warum wird "describeChild" 3 mal wiederholt aufgerufen? 2. Warum die Tests nicht ausgeführt wurden ("doOne" und "doTwo")? Diese Zeile wird unkommentiert: // Ergebnis result = JUnitCore.runClasses (arg0.getClass()); führt die Tests aus, aber ich verstehe nicht, warum funktioniert es so? 3. und vor allem - was ist mit dieser Zeile: @SuiteClasses ({ChildOne.class, ChildTwo.class})? es auf das Verhalten des Codes keinen Einfluss hatte ... Vielen Dank an alle, die :-)Erweitern ParentRunner in Junit
Suite reagiert:
@RunWith(FamilyRunner.class)
@SuiteClasses({ChildOne.class, ChildTwo.class, ChildThree.class})
public class Suite {
//nothing here
}
Runner Klasse:
public class FamilyRunner extends ParentRunner<ParentClass>{
public FamilyRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Rule
public TestName name = new TestName();
@Override
protected List<ParentClass> getChildren() {
List<ParentClass> list = new ArrayList<>();
System.out.println("Adding items to list");
list.add(new ChildOne());
list.add(new ChildTwo());
return list;
}
@Override
protected Description describeChild(ParentClass arg0) {
System.out.println("describeChild class: " + arg0.getClass().getSimpleName());
Description desc = Description.createTestDescription(name.getMethodName(),
name.getMethodName(), getClass().getAnnotations());
return desc;
}
@Override
protected void runChild(ParentClass arg0, RunNotifier arg1) {
System.out.println("runChild " + arg0.getClass().getSimpleName());
//Result result = JUnitCore.runClasses(arg0.getClass());
}
}
und:
public class ParentClass {
public ParentClass() {
System.out.println("created parent class");
}
}
public class ChildOne extends ParentClass {
public ChildOne() {
System.out.println("created ChildOne class");
}
@Test
public void doOne(){
System.out.println("doOne");
}
}
public class ChildTwo extends ParentClass {
public ChildTwo() {
System.out.println("created ChildTwo class");
}
@Test
public void doTwo(){
System.out.println("doTwo");
}
}
Die Konsole druckt:
Adding items to list
created parent class
created ChildOne class
created parent class
created ChildTwo class
describeChild class: ChildOne
describeChild class: ChildTwo
describeChild class: ChildOne
describeChild class: ChildTwo
describeChild class: ChildOne
describeChild class: ChildTwo
runChild ChildOne
runChild ChildTwo