我想调用JUnitCore的RunNotifier。 它被称为fNotifier,在JUnitCore类中启动。 来源:
https://github.com/KentBeck/junit/blob/master/src/main/java/org/junit/runner/JUnitCore.java
我可以通过某种方式通过反射得到这个,或者我可以调用这个RunNotifier。
我想使用他的pleaseStop()
方法。
答案 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");