【问题标题】:cobertura report without stopping tomcatcobertura 报告没有停止 tomcat
【发布时间】:2011-12-23 08:41:47
【问题描述】:

我遵循了为 cobertura 报告提供的步骤,并使用 URL Cobertura on Tomcat 中给出的以下步骤生成了报告

但现在我的问题是在不停止 tomcat 的情况下生成 cobertura 报告

【问题讨论】:

    标签: tomcat6 code-coverage report cobertura


    【解决方案1】:

    只有 2 种方法可以创建覆盖数据文件。

    1. 停止 Tomcat
    2. 执行一段代码,告诉cobertura 写入文件

    关于第二种方法:您必须在测试运行后自己调用此函数。您可以(例如)将此代码放入一个 servlet(在测试结束时调用)。

    如果不停止 Tomcat 或不执行该函数,将不会得到覆盖率数据文件。

    这是来自 cobertura FAQ

    Cobertura 仅在应用程序服务器关闭时写入覆盖数据文件。我们不想在运行测试后停止应用服务器。
    可以指示 Cobertura 写入数据文件。之一 你的类应该调用静态方法 net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData()。 例如,您可以在 您的网络应用程序:

    try {
        String className = "net.sourceforge.cobertura.coveragedata.ProjectData";
        String methodName = "saveGlobalProjectData";
        Class saveClass = Class.forName(className);
        java.lang.reflect.Method saveMethod = saveClass.getDeclaredMethod(methodName, new Class[0]);
        saveMethod.invoke(null,new Object[0]);
    } catch (Throwable t) {}
    

    【讨论】:

    • 感谢您的回复。在我的源代码中,我没有大量的 java 文件..所以我不能将以上一个添加到源代码中。我的第二个问题没有添加到源代码中,我们可以生成报告。
    • 如果不事先写入覆盖数据,您将无法创建报告。您需要停止 Tomcat 或执行 java 代码。没有办法解决它。
    • 感谢您的回复.. 我有很多 java 程序是我的问题
    • 嗨,我已经在 java 程序中编写了上述代码,但仍然无法获得覆盖率报告。我有一个疑问,我是用普通的 java 程序而不是用注销方法编写的。当我运行我的测试用例时,我没有触及我在上面编写代码的 java 类文件,然后它仍然给出报告。
    • coberturaflush.war文件有什么用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2013-09-26
    • 2014-06-30
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多