0

您好,我是一名 Java Web 应用程序开发人员

我有一个问题,我想让 clover 在运行时为我的 Web 应用程序收集数据。

通过向我的 tomcat (-Dclover.initstring.basedir="[PATH TO CLOVER DB]" ) 添加一个参数,我确实设法为单个应用程序这样做。

它工作得很好。

但问题是我们有不止一个应用程序,我想在运行时同时检查它们的数据覆盖率。

所以我试图通过引用合并的数据库文件来做同样的事情。它不起作用 - 合并的 db 文件只是不会在运行时更新。

您知道为什么或对我应该如何做有任何想法吗?

谢谢

4

1 回答 1

4

您在这里有一些误解:

首先,clover db 文件永远不会在运行时更新 - 只会在构建时更新。覆盖数据记录在 .db 文件旁边的单独文件中。.db 文件记录了项目源的结构以及正在运行的检测应用程序所需的一些其他数据。

其次,合并数据库的唯一原因是(立即)对其执行报告。合并 .db 后,无法为其收集任何覆盖范围。在检测应用程序运行之前或运行期间,合并是不合适的。之后才合适。

这是你应该做的:

对于每个项目(对应于 webapp),添加一个明确的 initstring 来唯一标识 webapp。例如对于 webapp Foo 有一个 foo.db 的 initstring,对于 webapp Bar 有一个 bar.db 等的 initstring

在项目 Foo 的 build.xml 中:

<clover-setup initstring="foo.db"/>

在项目 Bar 的 build.xml 中:

<clover-setup initstring="bar.db"/>

现在,您的 webapps 的 .db 文件名将是唯一的,因此当您添加 -Dclover.inistring.basedir=/path/to/folder/containg/the/db/files/ 时,每个 webapp 都不会互相践踏。

因此,在运行您的 web 应用程序后,在 /path/to/folder/containg/the/db/files/ 中,您会期望看到如下内容:

foo.db
foo.db9bl74u_g1e05ktv
foo.db9bl74u_g1e05ktv.1
bar.db
bar.db3wl21k_g1fbp9pb
bar.db3wl21k_g1fbp9pb.1

一旦你测试了你的 web 应用程序,你就可以报告它们。这是您可能想要合并的时候。如果您希望为所有 webapps 生成一个单一的覆盖率报告,您将合并。通常没有其他理由合并。

顺便说一句:您可能会在 forums.atlassian.com 上获得更快的答案。

于 2009-10-31T09:53:17.173 回答