【问题标题】:Clover web apps during runtime运行时的 Clover Web 应用程序
【发布时间】:2009-10-28 09:50:59
【问题描述】:

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

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

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

效果很好。

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

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

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

谢谢

【问题讨论】:

    标签: java clover


    【解决方案1】:

    这里有一些误解:

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

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

    这是你应该做的:

    对于每个项目(对应于一个 webapp),添加一个明确的 initstring 来唯一标识该 we​​bapp。例如对于 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
    

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

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

    【讨论】:

    • 另一种方法是,假设您的 web 应用程序都是同时构建的,请确保您的项目仅使用单个共享的 .db 文件。如果这些不同的 web 应用程序是单独构建的,那么这对您不起作用。
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多