JUnitCore.runClasses不打印任何内容

时间:2010-04-22 11:59:21

标签: java junit

我有一个测试类,我正在尝试使用以下代码从main方法运行:

Result r = org.junit.runner.JUnitCore.runClasses(TestReader.class);

当我检查Result对象时,我可以看到已经运行了5个测试,但屏幕上没有打印任何内容。

我应该采取其他措施来获得输出吗?

2 个答案:

答案 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)