Unittest整个netbeans应用程序,包括依赖项目

时间:2016-10-17 13:21:11

标签: netbeans junit ant automated-tests

情况如下:
我有一个java应用程序(netbeans项目),它使用几个java库(每个都是一个netbeans项目)。我有一个自动构建脚本,使用ant而不使用netbeans IDE构建应用程序。构建应用程序的命令是

ant jar

工作正常,它递归地为所有依赖库构建jar,最后为应用程序jar构建。

现在,我想在自动构建中运行所有单元测试。默认的ant目标取决于目标jartestjavadoc,所以我想我可以简单地调用

ant

作为构建命令。和以前一样,所有jar都是为依赖库构建的,但是只执行应用程序项目的单元测试(对于javadoc,btw来说也是如此)。
那么,我如何让ant以递归方式为每个依赖库项目运行单元测试?

使用的版本是:netbeans 8,junit 4。

我找到的唯一解决方案是在每个库和应用程序项目中为ant使用的build.xml添加依赖项:

<target name="-pre-jar" depends="test" />

但这意味着要对jar文件的每个版本执行所有测试。由于netbeans也使用这些build.xml文件,因此每个简单的构建都会导致执行所有单元测试。

1 个答案:

答案 0 :(得分:0)

经过一些测试后,我认为我找到了一个有效的解决方案。

我必须将以下代码添加到每个netbeans项目的build.xml中,其中应运行单元测试(fyi:netbeans为build.xml提供了构建过程的个人更改)。< / p>

<target name="-pre-jar" depends="test-on-release" />
<target name="test-on-release" if="release.runtests">
    <antcall target="test" />
</target>

然后,如果我在命令行上运行ant,我必须定义属性release.runtests以启用unittests的执行:

ant -Drelease.runtests= jar

如果从调用中删除属性的定义,则不会执行目标test-on-release,因此不会运行测试。当我使用netbeans IDE构建项目时也会发生同样的情况。

那就是说,它是一个解决方案,而不是 解决方案,至少不是我所希望的解决方案。如果有一种方法可以递归地运行测试目标而不必编辑所有这些build.xml文件,那将会更方便。也许这对netbeans生成的构建文件给出的约束是不可能的。