try*_*arn 9 java code-coverage maven jenkins jacoco
我最近在eclipse中使用EclEmma插件在我的应用程序中查找JUnits的代码覆盖率并且它工作得很好.
在下一步中,我希望能够找到端到端测试/功能测试的代码覆盖,这些测试/功能测试是从外部调用我们的应用程序(它们驻留在单独的服务器上).
基本上,我们将应用程序打包为jar(我们使用maven)并将其部署在服务器上.我们可以在这个位置触发功能测试.
在这种情况下,有没有办法找到代码覆盖?
我对代码覆盖工具如何工作(以原始语言)的理解是它加载类并根据已被命中的代码部分生成报告.因此,根据这种理解,我不需要访问测试代码.我只需要以某种方式插入的代码覆盖工具为我的应用程序罐子,每当这个罐子的任何代码被调用时,报告将被更新.我的理解是否正确?
注意:如果可以使用其他工具,我可以使用其他代码覆盖率工具.
sli*_*lim 11
您可以在服务器上运行代码,由JaCoCo代理在运行时进行检测,方法是将代理添加到Java命令行.例如,如果您的流程目前已启用:
java -jar myApp.jar
Run Code Online (Sandbox Code Playgroud)
你可以把它改成
java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar
Run Code Online (Sandbox Code Playgroud)
默认情况下,这会jacoco.exec
在VM终止时将覆盖数据写入文件,但您可以使用选项覆盖此选项,从而使您能够通过TCP/IP获取覆盖数据.请参阅JaCoCo代理文档.
您可以使用以下方法将其格式化为报告(例如HTML):
java -jar jacococli.jar report jacoco.exec [options]
Run Code Online (Sandbox Code Playgroud)
有关选项,请参阅JaCoCo CLI文档.
...或者您可以使用EclEmma来分析输出.
如果有正当理由不能使用代理,作为最后的手段,您可以使用instrument
命令将类文件静态转换为已检测的类文件jacocococli
.有关此信息,请参阅JaCoCo的"离线检测"文档.
直接调用代理和使用jacococli.jar
是使用JaCoCo的最基本方法.由于您使用的是Maven,因此您可以使用JaCoCo Maven插件获得许多相同的效果.
归档时间: |
|
查看次数: |
2910 次 |
最近记录: |