**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
去年关闭了。
Improve this question
我们有一个部署在JBoss 5.1、JDK 1.6上的应用程序。我们还有用PowerShell编写的脚本用于测试。这些脚本使用Web服务访问应用程序。
我想检查脚本的代码覆盖率。有什么想法吗?我看到的大多数工具都在检查JUnit测试覆盖率,我不知道我们如何使用它们。
4条答案
按热度按时间wgeznvg71#
AFAIK,所有的代码覆盖工具都使用相同的概念(我将省略报告和检查部分):
1.首先插入代码(即放置标记)。
1.然后运行测试以执行检测的代码(激活标记并收集数据)。
对于第二步,常见的用例确实是运行JUnit测试,但是您的测试不一定是JUnit测试,实际上,它们甚至不一定是自动化的。
而且,插装代码不必在单元测试的上下文中执行,它可以打包在WAR/EAR中并部署在容器上(这只需要多做一些工作)。
对于Cobertura,我们可以在Frequently Asked Questions中读取以下内容:
在Web应用程序中使用Cobertura
我有使用HttpUnit/HtmlUnit/Empirix/Rational Robot的自动化测试,我可以使用Cobertura吗?
是的!这个过程有点复杂,但是概念是相同的。首先检测编译的类。然后创建war文件。然后将war文件部署到应用服务器(Tomcat、JBoss、WebLogic、WebSphere等)中。现在运行测试。
当您的类被访问时,它们会在磁盘上创建一个“cobertura.ser”文件。您可能需要稍微挖掘一下才能找到它。Cobertura将此文件放在它认为是当前工作目录的目录中。通常,这是启动应用服务器的目录(例如,C:\Tomcat\bin)注意:**在应用程序服务器退出之前,此文件不会写入磁盘。**有关如何解决此问题,请参阅以下内容。
既然知道了cobertura.ser文件的位置,就应该修改部署步骤,使其将原始的cobertura.ser文件移动到应用服务器的适当目录中,然后在完成测试后将其移回,然后运行cobertura-report。
[...]
对于Emma,文档是这样说的:
3.11.如何在{WebLogic、Websphere、Tomcat、JBoss等}中使用EMMA?
首先,你几乎不可能在一个成熟的J2EE容器中使用运行模式(emmarun)。原因在于,许多J2EE特性需要专门的类加载,而这些加载将在EMMA检测类加载器之外进行。服务器可能运行良好,但你可能得不到覆盖率数据。
因此,正确的程序是在部署之前检测您的类别(离缐模式)。离缐检测永远遵循相同的编译/检测/封装/部署/取得涵盖范围/产生报告顺序。请遵循下列步骤:
1.使用EMMA的instr工具来插装所需的类。这可以在打包之前作为编译后的步骤来完成。然而,许多用户也发现让EMMA直接处理他们的jar是很方便的(或者使用覆盖模式就地处理,或者在完全复制模式下创建每件东西的单独插装副本);
1.像平常一样进行J2EE打包,但不要在此级别将emma.jar作为lib包含在.war、.ear等文件中;
1.找到该容器使用的JRE并将emma.jar复制到其/lib/ext目录中。如果无法做到这一点,请将emma.jar添加到服务器类路径中(以特定于服务器的方式);
1.部署您的插装类、. jar、. war、. ear等,并通过您的客户端测试用例或交互式或您所用的任何方式来练习/测试您的J2EE应用程序;
1.要获取覆盖率转储文件,您有三个选项,如中所述。强烈建议您将coverage.get control命令与v2. 1中提供的ctl工具一起使用。
对于三叶草,请查看Working with Distributed Applications页面。
yr9zkbsy2#
我使用emma覆盖工具与单元测试项目构建阶段相集成,但是,工具的文档表明,在您描述的情况下获得代码覆盖率是相当简单的。
ldfqzlk83#
我建议使用jacoco,因为它不需要修改源代码。
icnyk63a4#
Code cover是一个很好的工具。对于您的情况,您应该使用command-line interface,它可能会与现有的PowerShell脚本合并。