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

k10s72fa  于 2021-07-05  发布在  Java
关注(0)|答案(4)|浏览(457)

我们有一个部署在JBoss5.1和JDK1.6上的应用程序。我们还有在powershell中编写的用于测试的脚本。这些脚本使用web服务访问应用程序。我想检查脚本的代码覆盖率。有什么想法吗?我看到的大多数工具都是在检查junit测试覆盖率,我不知道如何使用它们。

pw136qt2

pw136qt21#

我建议使用jacoco,因为它不需要修改源代码。查看使用greybox工具测量(tomcat)java应用程序中的代码覆盖率

wydwbb8l

wydwbb8l2#

好吧,所有代码覆盖工具都使用相同的概念(我将省略报告和检查部分):
首先输入代码(即放置标记)。
然后运行测试以执行插入指令的代码(激活标记并收集数据)。
对于第二步,常见的用例确实是运行junit测试,但是您的测试不必是junit测试。实际上,它们甚至不需要自动化。
而且插入指令的代码不必在单元测试的上下文中执行,它可以打包在war/ear中并部署在容器上(这只需要更多的工作)。
对于cobertura,这是我们在常见问题解答中可以看到的:

在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报告。
[...]
对艾玛来说,文件上是这么说的:
3.11. 如何在{weblogic,websphere,tomcat,jboss,…}中使用emma?
首先,对于一个成熟的j2ee容器,使用动态模式(emmarun)的可能性很小。原因在于许多j2ee特性需要专门的类加载,这将发生在emma检测类加载程序之外。服务器可能运行良好,但可能得不到覆盖率数据。
因此,正确的过程是在部署(脱机模式)之前对类进行指令插入。脱机插装始终遵循相同的编译/instrument/package/deploy/get coverage/generate reports序列。遵循以下步骤:
使用emma的instr工具来插入所需的类。这可以在打包之前作为编译后的步骤来完成。然而,许多用户也发现让emma直接处理jar很方便(要么就地,使用覆盖模式,要么在fullcopy模式下创建所有内容的单独检测副本);
像平常一样进行j2ee打包,但不要将emma.jar作为lib包含在这个级别,也就是说,在.war、.ear等中;
找到容器使用的jre,并将emma.jar复制到其/lib/ext目录中。如果不可能,则将emma.jar添加到服务器类路径(以特定于服务器的方式);
部署插入指令的类、.jar、.wars、.ear等,并通过客户端测试用例或以交互方式或以任何方式来练习/测试j2ee应用程序;
要获取覆盖率转储文件,您有三个选项,如emma转储运行时覆盖率数据时控制哪些选项中所述?。强烈建议将coverage.get control命令与v2.1中提供的ctl工具一起使用。
对于clover,请查看使用分布式应用程序页面。

zzwlnbp8

zzwlnbp83#

我使用与单元测试项目构建阶段集成的emma覆盖工具,然而,该工具的文档说,在您描述的情况下获得代码覆盖相当简单。

f45qwnt8

f45qwnt84#

代码封面是一个很好的工具。对于您的情况,您应该使用命令行界面,该界面可能与现有的powershell脚本合并。

相关问题