单元测试整个netbeans应用程序,包括依赖的项目



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

ant jar

这很好,它递归地为所有依赖库构建jar,最后构建应用程序jar。

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

ant

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

使用的版本有:netbeans 8、junit 4。

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

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

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

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

我必须将以下代码添加到应该运行单元测试的每个netbeans项目的build.xml中(供参考:build.xml是由netbeans提供的,用于对构建过程进行个人更改)。

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

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

ant -Drelease.runtests= jar

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

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

相关内容

  • 没有找到相关文章

最新更新