2

我有一个 Ant 构建脚本,它检测一些 jar 文件,使用这些 jars 文件启动一些服务器,然后针对它们运行 junit 测试的集成测试套件。

我想在单独的文件中从每个服务器捕获 cobertura.ser 文件。

服务器需要设置其工作目录,以便它们可以获取配置文件。系统要求不得使用类路径来获取这些文件。

设置 net.sourceforge.cobertura.datafile 系统属性允许设置数据文件,这可以正常工作,直到在 ant java 任务上设置“dir”属性。设置 dir 后,服务器正确启动,测试套件运行正常,但是当服务器关闭时,不会写入任何数据文件。

这是 build.xml 的一个片段:

<parallel>
    <daemons>
        <java fork="true" dir="src\main\resources\conf\my.server" classname="my.Server">
            <sysproperty key="net.sourceforge.cobertura.datafile" file="target\cobertura.ser" />
            <classpath>
            ...
            </classpath>
            <arg value="-server" />
        </java>

        ...more servers...

        ...run junit tests...

    </daemons>
</parallel>
4

1 回答 1

0

答案是不要将服务器作为守护进程运行。我们这样做是为了在 junit 任务完成时自动关闭服务器,但实际上,Cobertura 工具并没有发现服务器正在关闭的事实,因此从未写出各种 cobertura.ser 文件.

解决方案是删除守护程序任务,并添加一个显式的服务器关闭机制,一旦测试完成,我们就可以从 Ant 调用它。

于 2010-10-11T11:19:10.883 回答