ParentRunner
から拡張してテストを実行したいと思います。 私は学習のためにそれをしていますが、特定のシナリオではありません。 私は下のクラスも出力もあります。 私はいくつかのことを理解していません: 1.なぜ "describeChild"は3回繰り返し呼び出されますか? 2.テストが実行されなかった理由(「doOne」および「doTwo」)? この行のコメントを外してください: //結果の結果= JUnitCore.runClasses(arg0.getClass()); はテストを実行していますが、なぜそれがそのように機能するのか分かりません。 3.そして何よりも - その行について: @SuiteClasses({ChildOne.class、ChildTwo.class})? それが応答誰にも... 感謝コードの動作に影響を及ぼさなかった JunitでParentRunnerを拡張する
@RunWith(FamilyRunner.class)
@SuiteClasses({ChildOne.class, ChildTwo.class, ChildThree.class})
public class Suite {
//nothing here
}
ランナークラス:
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());
}
}
と:
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");
}
}
コンソールの出力:
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