做药物研发的人上什么网站,网站转为移动网站,如何建立新的企业网站,河北世达建设集团有限公司网站如何让代码更易于维护此示例说明如何使用Maven和Sonar为单元和集成测试生成覆盖率。 它使用非常简单的技术#xff0c;只需10-15分钟即可在任何现有的Maven构建中运行。 它可以用于单元#xff0c;集成#xff0c;ATDD或任何其他类型的测试套件。 覆盖率结果显示在声纳中。 … 如何让代码更易于维护 此示例说明如何使用Maven和Sonar为单元和集成测试生成覆盖率。 它使用非常简单的技术只需10-15分钟即可在任何现有的Maven构建中运行。 它可以用于单元集成ATDD或任何其他类型的测试套件。 覆盖率结果显示在声纳中。 有什么事吗 我的前一篇文章展示了如何使用JUnit类别轻松拆分单元和集成测试套件。 http://johndobie.blogspot.com/2012/04/unit-and-integration-tests-with-maven.html 下一步的逻辑步骤是能够查看每个测试套件的指标。 本示例说明了如何使用Jacoco和Sonar进行操作。 码 示例代码在这里。 svn co https://designbycontract.googlecode.com/svn/trunk/examples/maven/categories-sonar
mvn clean install sonar:sonar 声纳 本示例依靠Sonar来显示代码覆盖率指标。 Sonar是一个狂热的开源代码质量工具每个人都应该看看。 http://www.sonarsource.org/ 对于我们的示例需要进行几个简单的配置更改。 以下链接显示了如何安装Sonar并进行更改 http://johndobie.blogspot.com/p/setting-up-sonar.html 拆分测试套件。 此示例依靠JUnit类别来划分测试。 我们定义一个标记器接口然后将其应用于我们想要拆分的测试。 public interface IntegrationTest {} 类别注释将添加到您的测试类中。 它采用新界面的名称。 import org.junit.experimental.categories.Category;
Category(IntegrationTest.class)
public class ExampleIntegrationTest{Testpublic void longRunningServiceTest() throws Exception {}
} 整个过程非常简单并在此处进行了详细说明 http://johndobie.blogspot.com/2012/04/unit-and-integration-tests-with-maven.html 分析代码覆盖率 我们使用jacoco插件进行代码覆盖。 这里有Jacoco的概述。 http://johndobie.blogspot.com/2012/01/unit-test-code-coverage.html 我们首先定义jacoco coverage文件的目录。 coverage.reports.dir${basedir}/target/coverage-reports
/coverage.reports.dir
sonar.jacoco.reportPath${coverage.reports.dir}/jacoco-unit.exec
/sonar.jacoco.reportPath
sonar.jacoco.itReportPath${coverage.reports.dir}/jacoco-it.exec
/sonar.jacoco.itReportPath
sonar.jacoco.jar${basedir}/lib/jacocoagent.jar
/sonar.jacoco.jar 配置单元测试 然后我们通过运行标准的surefire插件其中Jacoco代理指向$ {sonar.jacoco来启动单元测试。 reportPath} 。 这用于存储单元测试代码覆盖率结果。 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.7.2/version
configurationargLine-javaagent:${sonar.jacoco.jar}destfile${sonar.jacoco.reportPath},includescom.*/argLineincludesinclude**/*.class/include/includesexcludedGroupscom.test.annotation.type.IntegrationTest/excludedGroups
/configuration
/plugin 我们忽略以下配置的任何标记的集成测试 excludedGroupscom.test.annotation.type.IntegrationTest/excludedGroups 配置集成测试 对于集成测试我们使用故障保护插件并将Jacoco代理指向$ {sonar.jacoco。 itReportPath} 。 这用于存储集成测试代码覆盖率结果。 plugin
pluginartifactIdmaven-failsafe-plugin/artifactIdversion2.12/versiondependenciesdependencygroupIdorg.apache.maven.surefire/groupIdartifactIdsurefire-junit47/artifactIdversion2.12/version/dependency/dependenciesconfigurationgroupscom.test.annotation.type.IntegrationTest/groups/configurationexecutionsexecutiongoalsgoalintegration-test/goal/goalsconfigurationargLine-javaagent:${sonar.jacoco.jar}destfile${sonar.jacoco.itReportPath},includescom.*/argLineincludesinclude**/*.class/include/includes/configuration/execution/executions
/plugin 我们还告诉插件使用正确的JUnit类别 configurationgroupscom.test.annotation.type.IntegrationTest/groups
/configuration 当它们运行时它们将产生以下2个覆盖率文件。 开始声纳 在运行构建之前您需要启动Sonar服务器。 http://johndobie.blogspot.com/p/setting-up-sonar.html 运行示例 我们可以使用以下命令运行全部 mvn clean install sonar:sonar 如果浏览到声纳实例将看到以下结果。 参考 Agile Engineering Techniques博客上的JCG合作伙伴 John Dobie提供的Easy Unit和Integration Code Coverage 。 翻译自: https://www.javacodegeeks.com/2012/05/easy-unit-and-integration-code-coverage.html如何让代码更易于维护