emma是一个统计代码测试覆盖率的工具,teamcity默认集成了这个工具。
EMMA 是通过向 .class 文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA 支持两种模式:On the fly 和 Offline 模式。支持的覆盖率指标:EMMA支持class,method,line和basic block coverage指标。
teamcity采用的offline模式。
要teamcity支持代码覆盖率,首先应该在teamcity控制台上设置如下:
对于单元测试的覆盖率,teamcity集成的emma已经默认给出了支持。但是对于集成测试的代码覆盖率,却需要我们手工在ant脚本里面进行处理。如何来进行处理,首先让我们看一下emma生成覆盖率的原理:
1.向.class文件插入字节码,并生成metadata文件.em,这一步是在ant 执行javac时完成.
2.执行单元测试或集成测试,会生成运行过的采集文件.ec.
3.通过report,联合这两个文件来生成覆盖率报告.
现在的问题是集成测试的.ec如何merge到单元测试的.ec???
因为我用teamcity,单元测试的.ec默认路径是/opt/ci/teamcity4.5.4/buildAgent/work/xxxxx/下面.
解决的办法就是在启动weblogic的时候,将emma.jar放入classpath中,同时设定
-Demma.coverage.out.file=/opt/ci/teamcity4.5.4/buildAgent/work/xxxxx/coverage.ec
-Demma.coverage.out.merge=true
这样就将集成测试的运行类采集merge到了单元测试的运行类采集文件中.最后teamcity通过emma report根据这两个文件来创建最终的代码覆盖率报告.
所以要merge解决问题的ant脚本做法如下:
<target name="startup">
<echo message="-------- Starting Weblogic AdminServer -----"/>
<exec executable="${domain.home}/startWebLogic.sh">
<env key="JAVA_OPTIONS" value=" -Demma.coverage.out.file=${agent.work.dir}/15a5acdc6db7067d/coverage.ec -Demma.coverage.out.merge=true"/>
<env key="MEDREC_WEBLOGIC_CLASSPATH" value="${emma.jar}"/>
</exec>
</target>
下面是生成的覆盖率报告:
OVERALL COVERAGE SUMMARY
name
class, %
method, %
block, %
line, %
all classes |
14% (212/1493) |
6% (1226/19106) |
4% (16676/377144) |
5% (4539.2/87854) |
OVERALL STATS SUMMARY
total packages: |
173 |
total executable files: |
1370 |
total classes: |
1493 |
total methods: |
19106 |
total executable lines: |
87854 |
COVERAGE BREAKDOWN BY PACKAGE
注意:集成测试所运行的.class必须是metadata文件中所描述的.class,否则报CLASS_STAMP_MISMATCH Error。
这个问题产生的原因是metadata在javac相同的.class时,后面的覆盖前面的。
分享到:
- 2009-07-23 10:35
- 浏览 1642
- 评论(0)
- 论坛回复 / 浏览 (0 / 3053)
- 查看更多
相关推荐
teamcity-messages, python 单元测试 报告到 TeamCity python 单元测试 报告到 TeamCity 这个包集成了 python 和 TeamCity 持续集成 ( CI ) 服务器。 它允许从 python 代码发送 "服务消息" 。 此外,它还提供了与...
TeamCity是一款强大的持续集成(CI)/持续部署(CD)工具,它可以帮助开发团队自动构建、测试和部署软件。在TeamCity中,Ant脚本扮演着至关重要的角色,因为Ant是Java项目常用的构建工具,能够定义和执行构建过程。...
**前端开源库-karma-...总结来说,Karma Teamcity Reporter 是前端开发中提升测试效率和质量的重要工具,它通过连接 Karma 和 TeamCity,实现了测试结果的自动化报告,让团队在持续集成流程中更好地管理和优化代码。
Teamcity-build-scan-plugin是一个专为TeamCity设计的开源插件,它的主要目的是将流行的构建工具Gradle的...它不仅提高了构建管理和分析的效率,还增强了团队的协作能力,有助于实现持续集成和持续交付的最佳实践。
teamcity-docker-maven-demo
gitlab与teamcity持续化部署,上面的内容包含有teamcity的构建步骤,还有如何修改teamcity分支问题
团队城市的公共生活Piazza是...安装Piazza插件zip文件打开TeamCity Server网站,然后转到“管理>插件列表” 点击“上传插件压缩” 选择Piazza插件zip文件,并将其保存到预先选择的“ <TeamCity> / plugins” 重新启动
TeamCity.GitHub(已淘汰) 该插件为 7.1和更高版本提供GitHub集成,自动将...首先,下载, 将其配置为在TeamCity上进行持续集成。 注意请确保您下载的.zip文件有效-使用curl或wget时,您可能会重定向到登录页面。
TeamCity.Virtual, Docker 和for构建运行步骤的TeamCity插件 Docker/vagrant构建 TeamCity特性插件检测和报告已经安装的vagrant 和 docker使用专用构建 runner 在 Docker/Vagrant 构建 runner的帮助下,在虚拟化环境...
**TeamCity** 是一个流行的持续集成/持续部署(CI/CD)服务器,它可以帮助团队快速检测代码更改并自动构建、测试和部署软件。在TeamCity中设置集成测试可以确保每次代码提交后都能及时发现潜在问题。 **Postman** ...
Automating .Net Deployments using TeamCity and Octopus 亚马逊 azw3格式, CI CD学习使用, 下载后请24小时内删除
TeamCity 是一款强大的持续集成和持续部署(CI/CD)工具,支持多种编程语言和构建工具。通过集成 `phpunit-runner-teamcity`,TeamCity 用户可以享受以下优势: 1. **实时反馈**:当测试运行时,TeamCity 可以立即...
标题中的“cake-teamcity:TeamCity的蛋糕整合”指的是将Cake构建系统与TeamCity持续集成服务器进行集成的实践。Cake是一种基于.NET Framework的构建脚本语言,它使用C#语法,使得编写构建脚本变得更加简单和高效。而...
【基于DevOps能力模型的持续集成方法】 DevOps能力模型是一种综合性的框架,旨在促进开发(Development)和运维(Operations)团队之间的协作与自动化,以提高软件开发的效率和质量。这种模型通常包括自动化、质量...
团队合作 dohq-teamcity是一个Python软件包,提供对JetBrains TeamCity服务器API的访问。 该库支持所有方法,如果找不到,请创建问题。安装 # Latest releasepip install dohq-teamcity# Develop branchgit clone ...
很多团队通过实践持续集成发现,这种方法显著降低了后期集成时遇到的难题,同时加快了高质量软件产品的开发速度。 ### 软件集成的历史困境 Martin Fowler通过回忆自己在一家英国电子公司实习的经历,形象地描绘了...
支持TeamCity与VMware vSphere云的集成,并允许用户自动创建/启动/停止/删除虚拟机。 在开始使用集成之前,您需要创建一个虚拟机实例。 必须安装TeamCity Build Agent并将其设置为自动启动。 制作说明 该插件自Team...
.NET插件 TeamCity .NET插件为TeamCity中的.NET工具提供支持。 它简化了使用.NET框架和库的Windows和跨...TeamCity与.NET的集成 兼容性 该插件与 Visual Studio 2013+ MSBuild 12以上 VSTest控制台12+ 注意:此插
在Flex项目中,我们可以使用如Hudson、Jenkins或TeamCity等CI工具,它们可以自动构建项目、运行测试并报告结果,极大地提高了开发效率。 压缩包内的"Flash持续集成自动化单元测试_软件测试_酷勤网.htm"和"持续集成...
TeamCity目录为: 如果您拥有TeamCity的源代码-它是dist-teamcity-tomcat工件的路径( Build -> Build Artifacts -> dist-teamcity-tomcat -> Build ,则文件夹将为<teamcity>/.idea_artifacts/dist-teamcity