我有一个测试类,我正在尝试使用以下代码从main方法运行:
Result r = org.junit.runner.JUnitCore.runClasses(TestReader.class);
当我检查Result对象时,我可以看到已经运行了5个测试,但屏幕上没有打印任何内容。
我应该采取其他措施来获得输出吗?
答案 0 :(得分:20)
是的,您应该像这样注册TextListener
:
JUnitCore junit = new JUnitCore();
junit.addListener(new TextListener(System.out));
junit.run(TestReader.class);
答案 1 :(得分:3)
没有一种非常干净的方法可以做到这一点,因为这不常见。如果要创建可用于在命令行上运行测试的程序,则只需要打印输出,而JUnitCore本身就是这样做的。
所有选项都涉及在内部包中使用类。
Result r = JUnitCore.runMain(new RealSystem(), TestReader.class.getName())
如果您要打印到System.out
以外的其他内容,则可以创建自己的org.junit.internal.JUnitSystem
子类,并使用该子类代替RealSystem
您也可以使用org.junit.internal.TextListener
。有关示例,请参阅the JUnitCore source中的runMain(JUnitSystem system, String... args)
。