JUnit Ant任务不会输出到屏幕

Sté*_*ert 8 java ant junit

上下文

我正在使用ant1-9-0.jar,ant-junit-1.9.0.jarant-launcher-1.9.0.jar以编程方式运行JUnit测试.

在我的代码中,我有这个函数返回JUnit任务:

/**
 * Generates a JUnit task which runs every single test in a new JVM
 * @return task The JUnit task
 * @throws Exception
 */
public JUnitTask generateRunTestsTask() throws Exception {
    /* New JUnit task */
    JUnitTask task = new JUnitTask();
    task.init();

    /* Summary settings */
    JUnitTask.SummaryAttribute sa = new JUnitTask.SummaryAttribute();
    sa.setValue("withOutAndErr");
    task.setPrintsummary(sa);

    /* JVM configuration */
    task.setFork(true);
    task.setDir(new File(this.deliveryBinDir));
    task.createJvmarg().setValue("-Duser.dir=" + this.deliveryBinDir);

    /* Output to file */
    FormatterElement.TypeAttribute typeFile = new FormatterElement.TypeAttribute();
    typeFile.setValue("xml");
    FormatterElement formatToFile = new FormatterElement();
    formatToFile.setType(typeFile);
    task.addFormatter(formatToFile);

    /* Task options */
    task.setHaltonfailure(false);
    task.setShowOutput(true);
    task.setOutputToFormatters(true);

    List<String> testSuites = getTestJarList(this.deliveryLibFolder);
    for (String singleSuite : testSuites) {
        JUnitTest test = new JUnitTest(singleSuite);
        /* Sets reports location */
        test.setTodir(this.testReportsFolder);
        task.addTest(test);
    }

    return task;
}
Run Code Online (Sandbox Code Playgroud)

JUnit测试运行没有问题,输出成功存储到.xml文件中.

问题

我需要将输出打印到控制台,因为我想要实时结果(不仅在整个过程结束时).为此,我FormatterElement/** Output to file */块下方添加了第二个:

/* Output to screen */
FormatterElement.TypeAttribute typeScreen = new FormatterElement.TypeAttribute();
typeScreen.setValue("plain");
FormatterElement formatToScreen = new FormatterElement();
formatToScreen.setType(typeScreen);
formatToScreen.setUseFile(false);
formatToScreen.setOutput(System.out);
task.addFormatter(formatToScreen);
Run Code Online (Sandbox Code Playgroud)

但我的控制台仍然不显示日志.我也试图删除formatToFile FormatterElement,但没有成功.你有什么建议吗?

笔记:

  • 这些单元测试确实需要分叉,不能改变,
  • 如果您需要更多代码,请告诉我,例如Ant项目Ant目标的设置,
  • 单元测试确实包含Sysouts,
  • 我已经复制了一个有效的build.xml文件,
  • 如果需要,这里是Apache Ant JUnit存储库.

Del*_*dor 4

St\xc3\xa9phane,您的 junit 任务代码似乎对于处理控制台的输出是正确的。

\n\n

我已经检查了 ANT Main 类的源代码,您需要定义一个构建侦听器才能显示日志。

\n\n

这是定义用于日志记录目的的默认侦听器的工作示例:

\n\n
BuildLogger logger = new DefaultLogger();\nlogger.setOutputPrintStream(System.out);\nlogger.setErrorPrintStream(System.err);\nlogger.setMessageOutputLevel(Project.MSG_INFO);\nlogger.setEmacsMode(true);\nproject.addBuildListener(logger); //add build listener to your define project\n
Run Code Online (Sandbox Code Playgroud)\n