Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java执行ant并捕获输出?_Java_Eclipse_Ant_Junit - Fatal编程技术网

如何使用java执行ant并捕获输出?

如何使用java执行ant并捕获输出?,java,eclipse,ant,junit,Java,Eclipse,Ant,Junit,我有一个ant构建文件,其中包含我想要执行的JUnit测试套件。 目前,我只需右键单击并从Eclipse运行构建文件 我想写一个可以自动执行ant构建文件的java代码。 所以我只是运行代码,ant将被执行 第二,我想捕获测试结果。目前,结果基于JUnit HTML报告。 我想做我自己的简单测试报告。我读到有JUnitResultFormatter,但我不能 一步一步地找到如何使用它的指导。有人能给我指一下参考资料吗?最简单的方法是使用java中的JunitCore类。不建议直接从ant调用ma

我有一个ant构建文件,其中包含我想要执行的JUnit测试套件。 目前,我只需右键单击并从Eclipse运行构建文件

我想写一个可以自动执行ant构建文件的java代码。 所以我只是运行代码,ant将被执行

第二,我想捕获测试结果。目前,结果基于JUnit HTML报告。 我想做我自己的简单测试报告。我读到有JUnitResultFormatter,但我不能
一步一步地找到如何使用它的指导。有人能给我指一下参考资料吗?

最简单的方法是使用java中的
JunitCore
类。不建议直接从ant调用
main
,请参阅Junit和

为每个测试用例定义这样的main是非常常见的,以便能够从命令行单独运行测试。我通常也会更改这些方法中的日志设置,以便在手动运行单个测试时比在ant中运行时获得更多信息


然后,为了创建自定义报告,您必须实现一个用于创建报告并进行注册的,如javadoc中所述:

public void main(String... args) {
  JUnitCore core= new JUnitCore();
  core.addListener(new RingingListener());
  core.run(MyTestClass.class);
}

然后,在每次测试运行之前和之后都会调用您的侦听器,并传递有关即将运行的测试的描述性信息,以及测试完成后的运行情况。

感谢您提供的详细信息:)这样做是否确实消除了对ant构建文件的需要,因为它专门调用了测试类?是的,有了这个,您将能够在不使用
ant
的情况下调用测试。您也可以混合使用这两种方法,并且仍然可以使用ant自动运行所有测试,例如在连续集成中。很抱歉再次询问,但是如果测试类不在同一文件夹中,如何指定其路径?这是我的文件夹结构:SampleTest->build->test-->classes-->test.diagram1_Suite1.class(这是类文件)->test-->RunTest.class(这是执行器),再次感谢您在代码示例行
core.run(MyTestClass.class)中看到这一行
JunitCore
根据类名加载测试。您只需引用测试的完全限定类名,并确保该类位于类路径中。:(代码工作正常,但我发现我需要运行ant文件,无法使用这种方式执行JUnit(因为我的java代码不在java项目中)。您知道如何克服这一问题吗?