1

から拡張してテストを実行したいと思いParentRunnerます。特定のシナリオではなく、学習のためにそれを行っています。以下のクラスがあり、その下にも出力があります。私はいくつかのことを理解していません: 1. なぜ「describeChild」が 3 回繰り返し呼び出されるのですか? 2. テストが実行されなかったのはなぜですか?(「doOne」と「doTwo」)? この行のコメントを外します: //Result result = JUnitCore.runClasses(arg0.getClass()); テストを実行していますが、なぜそのように機能するのかわかりませんか? 3. そして何よりも - @SuiteClasses({ChildOne.class, ChildTwo.class}) という行はどうですか? コードの動作に影響はありませんでした...応答してくれた人に感謝します:-)

スイートクラス:

@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
4

1 に答える 1