`
eddysheng
  • 浏览: 111744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于teamcity的持续集成实践(emma)

阅读更多

emma是一个统计代码测试覆盖率的工具,teamcity默认集成了这个工具。

EMMA 是通过向 .class 文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA 支持两种模式:On the fly 和 Offline 模式。支持的覆盖率指标:EMMA支持class,method,line和basic block coverage指标。

teamcity采用的offline模式。

 

要teamcity支持代码覆盖率,首先应该在teamcity控制台上设置如下:

 

Code coverage: Coverage instrumentation parameters:
Coverage Info
Enable code coverage Add 'clean' target in your Ant build for this option to work. Do not use the option for production builds since it will result in EMMA-instrumented class files.
Include source files in the coverage data
You may provide a filter for classes included into code coverage. Please see EMMA documentation for details.



对于单元测试的覆盖率,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

name class, % method, % block, % line, %
com.test 0%   (0/18) 0%   (0/85) 0%   (0/4556) 0%   (0/1007)
com.test.dao 0%   (0/3) 0%   (0/8) 0%   (0/27) 0%   (0/10)
com.test.dao.ibatis 0%   (0/21) 0%   (0/113) 0%   (0/8655) 0%   (0/1677)
com.test.jmx 0%   (0/1) 0%   (0/7) 0%   (0/24) 0%   (0/10)
com.test.service 0%   (0/4) 0%   (0/26) 0%   (0/269) 0%   (0/82)

 

com.test1.vo 49%  (28/57) 31%  (399/1294) 31%  (1421/4631) 31%  (613/1962)
com.test1.test.service 80%  (4/5) 32%  (13/40) 32%  (142/445) 31%  (41/133)
com.test1.server.store 60%  (6/10) 47%  (28/60) 35%  (452/1290) 42%  (109.6/264)
com.test1.util.logging 100% (3/3) 30%  (13/44) 37%  (239/639) 34%  (62.9/184)
com.test1.tools.beans 20%  (1/5) 18%  (4/22) 39%  (393/1020) 39%  (108/276)
com.test1.ejb 67%  (2/3) 54%  (14/26) 39%  (233/597) 43%  (67.8/158)
com.test1.common 33%  (2/6) 26%  (7/27) 40%  (111/275) 48%  (52/109)

 

注意:集成测试所运行的.class必须是metadata文件中所描述的.class,否则报CLASS_STAMP_MISMATCH Error。 这个问题产生的原因是metadata在javac相同的.class时,后面的覆盖前面的。

 

分享到:
评论

相关推荐

    teamcity-messages, python 单元测试 报告到 TeamCity.zip

    teamcity-messages, python 单元测试 报告到 TeamCity python 单元测试 报告到 TeamCity 这个包集成了 python 和 TeamCity 持续集成 ( CI ) 服务器。 它允许从 python 代码发送 "服务消息" 。 此外,它还提供了与...

    teamcity-ant脚本.rar

    TeamCity是一款强大的持续集成(CI)/持续部署(CD)工具,它可以帮助开发团队自动构建、测试和部署软件。在TeamCity中,Ant脚本扮演着至关重要的角色,因为Ant是Java项目常用的构建工具,能够定义和执行构建过程。...

    前端开源库-karma-teamcity-reporter

    **前端开源库-karma-...总结来说,Karma Teamcity Reporter 是前端开发中提升测试效率和质量的重要工具,它通过连接 Karma 和 TeamCity,实现了测试结果的自动化报告,让团队在持续集成流程中更好地管理和优化代码。

    teamcity-build-scan-plugin,与Gradle Build Scan服务集成的TeamCity插件。.zip

    Teamcity-build-scan-plugin是一个专为TeamCity设计的开源插件,它的主要目的是将流行的构建工具Gradle的...它不仅提高了构建管理和分析的效率,还增强了团队的协作能力,有助于实现持续集成和持续交付的最佳实践。

    teamcity-docker-maven-demo:teamcity持续集成案例项目

    teamcity-docker-maven-demo

    gitlab+teamcity分支部署.docx

    gitlab与teamcity持续化部署,上面的内容包含有teamcity的构建步骤,还有如何修改teamcity分支问题

    team-piazza:TeamCity持续集成服务器的构建监视器

    团队城市的公共生活Piazza是...安装Piazza插件zip文件打开TeamCity Server网站,然后转到“管理&gt;插件列表” 点击“上传插件压缩” 选择Piazza插件zip文件,并将其保存到预先选择的“ &lt;TeamCity&gt; / plugins” 重新启动

    TeamCity.GitHub:TeamCity和GitHub的集成

    TeamCity.GitHub(已淘汰) 该插件为 7.1和更高版本提供GitHub集成,自动将...首先,下载, 将其配置为在TeamCity上进行持续集成。 注意请确保您下载的.zip文件有效-使用curl或wget时,您可能会重定向到登录页面。

    TeamCity.Virtual, Docker 和for构建运行步骤的TeamCity插件.zip

    TeamCity.Virtual, Docker 和for构建运行步骤的TeamCity插件 Docker/vagrant构建 TeamCity特性插件检测和报告已经安装的vagrant 和 docker使用专用构建 runner 在 Docker/Vagrant 构建 runner的帮助下,在虚拟化环境...

    integration-success-test-poc:使用TeamCity上的PostmanNewman进行集成测试的POC(成功)

    **TeamCity** 是一个流行的持续集成/持续部署(CI/CD)服务器,它可以帮助团队快速检测代码更改并自动构建、测试和部署软件。在TeamCity中设置集成测试可以确保每次代码提交后都能及时发现潜在问题。 **Postman** ...

    Automating .Net Deployments using TeamCity and Octopus

    Automating .Net Deployments using TeamCity and Octopus 亚马逊 azw3格式, CI CD学习使用, 下载后请24小时内删除

    phpunit-runner-teamcity:TeamCity 的 PHPUnit 运行程序

    TeamCity 是一款强大的持续集成和持续部署(CI/CD)工具,支持多种编程语言和构建工具。通过集成 `phpunit-runner-teamcity`,TeamCity 用户可以享受以下优势: 1. **实时反馈**:当测试运行时,TeamCity 可以立即...

    cake-teamcity:TeamCity的蛋糕整合

    标题中的“cake-teamcity:TeamCity的蛋糕整合”指的是将Cake构建系统与TeamCity持续集成服务器进行集成的实践。Cake是一种基于.NET Framework的构建脚本语言,它使用C#语法,使得编写构建脚本变得更加简单和高效。而...

    基于DevOps能力模型的持续集成方法.pdf

    【基于DevOps能力模型的持续集成方法】 DevOps能力模型是一种综合性的框架,旨在促进开发(Development)和运维(Operations)团队之间的协作与自动化,以提高软件开发的效率和质量。这种模型通常包括自动化、质量...

    teamcity:dohq-teamcity是一个Python软件包,提供对JetBrains TeamCity服务器API的访问

    团队合作 dohq-teamcity是一个Python软件包,提供对JetBrains TeamCity服务器API的访问。 该库支持所有方法,如果找不到,请创建问题。安装 # Latest releasepip install dohq-teamcity# Develop branchgit clone ...

    重温大师经典:Martin Fowler的持续集成

    很多团队通过实践持续集成发现,这种方法显著降低了后期集成时遇到的难题,同时加快了高质量软件产品的开发速度。 ### 软件集成的历史困境 Martin Fowler通过回忆自己在一家英国电子公司实习的经历,形象地描绘了...

    teamcity-vmware-plugin:启用Teamcity云与vCenter和vSphere Hypervisor的集成

    支持TeamCity与VMware vSphere云的集成,并允许用户自动创建/启动/停止/删除虚拟机。 在开始使用集成之前,您需要创建一个虚拟机实例。 必须安装TeamCity Build Agent并将其设置为自动启动。 制作说明 该插件自Team...

    teamcity-dotnet-plugin:.NET Core项目的TeamCity插件

    .NET插件 TeamCity .NET插件为TeamCity中的.NET工具提供支持。 它简化了使用.NET框架和库的Windows和跨...TeamCity与.NET的集成 兼容性 该插件与 Visual Studio 2013+ MSBuild 12以上 VSTest控制台12+ 注意:此插

    Flex持续集成之单元测试

    在Flex项目中,我们可以使用如Hudson、Jenkins或TeamCity等CI工具,它们可以自动构建项目、运行测试并报告结果,极大地提高了开发效率。 压缩包内的"Flash持续集成自动化单元测试_软件测试_酷勤网.htm"和"持续集成...

    teamcity-git:Git VCS对TeamCity的支持

    TeamCity目录为: 如果您拥有TeamCity的源代码-它是dist-teamcity-tomcat工件的路径( Build -&gt; Build Artifacts -&gt; dist-teamcity-tomcat -&gt; Build ,则文件夹将为&lt;teamcity&gt;/.idea_artifacts/dist-teamcity

Global site tag (gtag.js) - Google Analytics