获取JUnitCore的RunNotifier

时间:2012-04-10 10:57:45

标签: java junit

我想调用JUnitCore的RunNotifier。 它被称为fNotifier,在JUnitCore类中启动。 来源:

https://github.com/KentBeck/junit/blob/master/src/main/java/org/junit/runner/JUnitCore.java

我可以通过某种方式通过反射得到这个,或者我可以调用这个RunNotifier。

我想使用他的pleaseStop()方法。

2 个答案:

答案 0 :(得分:2)

使用反射不是最好的方法,但你可以这样做:

public static void main(String[] args) throws Exception {
    Computer computer = new Computer();

    JUnitCore jUnitCore = new JUnitCore();
    Field field = JUnitCore.class.getDeclaredField("fNotifier");
    field.setAccessible(true);
    RunNotifier runNotifier = (RunNotifier) field.get(jUnitCore);
    runNotifier.pleaseStop();
    jUnitCore.run(computer, BeforeAfterTest.class, AssertionErrorTest.class);
}

这将抛出org.junit.runner.notification.StoppedByUserException

如果你想要更多的灵活性或控制,更好的方法是将你想要的比特从JUnitCore复制到你的班级,然后你就可以直接控制通知器和听众等。这是最好的方式。 JUnitCore并没有真正被解除延伸。

答案 1 :(得分:1)

使用JUnit 4.1.2,字段名称已更改为' notifier:

 Field field = JUnitCore.class.getDeclaredField("notifier");
相关问题