Java:测量远程脚本测试的代码覆盖率

时间:2009-11-02 09:06:17

标签: java testing jboss code-coverage

我们有一个部署在JBoss 5.1,JDK 1.6上的应用程序。 我们还有用PowerShell编写的脚本进行测试。这些脚本使用Web服务访问应用程序。 我想检查脚本的代码覆盖率。有任何想法吗? 我看到的大多数工具都在检查JUnit测试覆盖率,但我不知道如何使用它们。

4 个答案:

答案 0 :(得分:7)

AFAIK,所有代码覆盖工具都使用相同的概念(我将省略报告和检查部分):

  1. 首先输入代码(即放置标记)。
  2. 然后运行测试以执行已检测的代码(以激活标记和收集数据)。
  3. 对于第二步,常见用例确实是运行JUnit测试,但您的测试不必是JUnit测试。实际上,他们甚至不需要自动化。

    检测代码不必在单元测试的上下文中执行,它可以打包在WAR / EAR中并部署在容器上(这只需要更多的工作)。

    对于Cobertura,我们可以在Frequently Asked Questions中阅读:

      

    将Cobertura与Web应用程序一起使用

         

    我有使用的自动化测试   HttpUnit的/的HtmlUnit / Empirix公司/理性   机器人,我可以使用Cobertura吗?

         

    是的!这个过程多一点   涉及,但概念是一样的。   你编译的第一个工具   类。然后创建您的war文件。   然后将war文件部署到您的   应用服务器(Tomcat,JBoss,   WebLogic,WebSphere等)。现在跑   你的考试。

         

    随着您的课程被访问,他们   将创建一个“cobertura.ser”文件   磁盘。你可能需要挖掘一下   有点找到它。 Cobertura说明了这一点   提交它认为的文件   当前的工作目录。通常   这是该目录   应用程序服务器是从   (例如,C:\ Tomcat \ bin)注意:   此文件未写入磁盘   直到应用程序服务器退出。   请参阅下文,了解如何解决此问题。

         

    现在你知道了   cobertura.ser文件是,你应该   修改您的部署步骤以便它   将原来的cobertura.ser移动到   您的相应目录   应用程序服务器,然后移动它   完成测试后回来。然后跑   的Cobertura报告。

         

    [...]

    对于艾玛来说,这就是documentation所说的:

      

    <强> 3.11。如何在{WebLogic,Websphere,Tomcat,JBoss,...}中使用EMMA?

         

    首先,您几乎没有机会使用动态模式(emmarun)和完整的J2EE容器。原因在于许多J2EE特性需要在EMMA检测类加载器之外进行专门的类加载。服务器可能运行正常,但您可能无法获得覆盖数据。

         

    因此,正确的过程是在部署之前检测您的类(离线模式)。离线检测始终遵循相同的compile / instrument / package / deploy / get coverage / generate报告序列。请按照以下步骤操作:

         
        
    1. 使用EMMA的instr工具来检测所需的类。这可以在打包之前作为后编译步骤完成。但是,许多用户还发现让EMMA直接处理他们的罐子(就地,使用覆盖模式,或者通过在全文模式下创建所有内容的单独的检测副本)很方便;
    2.   
    3. 正常进行J2EE打包,但不要将emma.jar包含在此级别的lib中,即在.war,.ear等中;
    4.   
    5. 找到容器使用的JRE,并将emma.jar复制到其/ lib / ext目录中。如果这是不可能的,请将emma.jar添加到服务器类路径中(以特定于服务器的方式);
    6.   
    7. 部署您的已检测类,.jars,.wars,.ears等,并通过客户端测试用例或以交互方式或以您执行的任何方式练习/测试您的J2EE应用程序;
    8.   
    9. 要获取coverage转储文件,您有哪三个选项可用于控制何时EMMA转储运行时覆盖率数据?强烈建议您将coverage.get控制命令与v2.1中提供的ctl工具一起使用。
    10.   

    对于三叶草,请查看Working with Distributed Applications页面。

答案 1 :(得分:2)

我使用与单元测试项目构建阶段集成的emma覆盖工具,但是,工具的文档says在您描述的情况下获得代码覆盖非常简单。

答案 2 :(得分:1)

我建议jacoco,因为它不需要修改源代码。 查看Measuring Code Coverage in (Tomcat) Java Applications with a GreyBox Harness

答案 3 :(得分:0)

Code cover是一个很棒的工具。对于您的情况,您应该使用command-line interface,这可能与现有的PowerShell脚本结合使用。