做视频网站视频短片,电商网站开发 思维导图,做海外市场什么网站推广,泰格豪雅手表官方网站自SonarQube 4.2起。 测试报告不是在Maven构建期间由Sonar Maven插件生成的#xff08;请参阅SonarQube的博客文章 #xff09;。 因此#xff0c;在Sonar Maven插件收集SonarQube服务器的信息之前#xff0c;必须由另一个插件生成测试报告。 在这里#xff0c;Jacoco Mav… 自SonarQube 4.2起。 测试报告不是在Maven构建期间由Sonar Maven插件生成的请参阅SonarQube的博客文章 。 因此在Sonar Maven插件收集SonarQube服务器的信息之前必须由另一个插件生成测试报告。 在这里Jacoco Maven插件可以提供帮助。 它有可能生成SonarQube可以理解的测试报告。 Jacoco Maven插件更进一步它有可能生成用于集成测试的测试报告。 在以下各节中提出了满足以下条件的解决方案 Maven被用作构建工具。 该项目可以是多模块项目。 单元测试和集成测试是每个模块的一部分。 这里集成测试是测试模块中类之间的集成的测试。 测试报告在单元测试报告和集成测试报告中是分开的。 下一部分的路线图是首先显示了Maven项目结构用于单元测试和集成测试的分离。 然后显示了Maven项目配置其中包含单独的单元测试运行和集成测试运行。 之后我们来看看Maven项目配置以生成在单元测试和集成测试中分开的测试报告。 最后SonarQube的仪表板中显示了SonarQube的配置用于测试报告的可视化。 Maven项目结构 首先我们看一下单个模块项目的默认Maven项目结构。 my-app
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ │ └──
│ └── test
│ └── java
│ └── 目录src / main / java包含生产源代码目录src / test / java包含测试源代码。 我们可以将单元测试和集成测试放到这个目录中。 但是我们想将这两种类型的测试放在单独的目录中。 因此我们添加了一个名为src / it / java的新目录。 然后将单元测试放在src / test / java目录中并将集成测试放在src / it / java目录中因此新的项目结构如下图所示。 my-app
├── pom.xml
├── src
│ ├── it
│ │ └── java
│ │ └──
│ ├── main
│ │ └── java
│ │ └──
│ └── test
│ └── java
│ └──单元和集成测试运行 幸运的是单元测试运行配置是Maven默认项目配置的一部分。 如果满足以下条件Maven将自动运行这些测试 测试位于目录src / test / java和 测试类名称以Test开头或以Test或TestCase结尾。 Maven在Maven的构建生命周期阶段测试期间运行这些测试。 集成测试运行配置必须手动完成。 它存在可以提供帮助的Maven插件。 我们希望满足以下条件 集成测试存储在目录src / it / java和 集成测试类名称要么以IT开头要么以IT或ITCase结尾 集成测试在Maven的构建生命周期阶段进行集成测试。 首先Maven必须知道它必须在其测试类路径中包含目录src / it / java 。 在这里Build Helper Maven插件可以提供帮助。 它将目录src / it / java添加到测试类路径。 plugingroupIdorg.codehaus.mojo/groupIdartifactIdbuild-helper-maven-plugin/artifactIdversion1.8/versionexecutionsexecutionidadd-test-source/idphaseprocess-test-sources/phasegoalsgoaladd-test-source/goal/goalsconfigurationsourcessrc/it/java/sources/configuration/executionexecutionidadd-test-resources/idphasegenerate-test-resources/phasegoalsgoaladd-test-resource/goal/goalsconfigurationresourcesresourcesrc/it/resources/resource/resources/configuration/execution/executions/plugin 上面的代码段必须插入到项目根pom中的project build plugins部分 。 Maven的构建生命周期包含一个称为集成测试的阶段。 在此阶段我们要运行集成测试。 因此我们将Maven故障安全插件绑定到阶段集成测试 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-failsafe-plugin/artifactIdversion2.13/versionconfigurationencoding${project.build.sourceEncoding}/encoding/configurationexecutionsexecutionidfailsafe-integration-tests/idphaseintegration-test/phasegoalsgoalintegration-test/goalgoalverify/goal/goals/execution/executions
/plugin 同样以上代码片段也必须插入到项目根pom中的project build plugins部分 。 然后当Maven故障保护插件的类名称以IT开头或以IT或ITCase结尾时它们会自动运行集成测试。 测试报告生成 我们想使用Jacoco Maven插件生成测试报告。 它应该生成两个测试报告一个用于单元测试一个用于集成测试。 因此该插件必须要准备两个单独的代理。 然后他们在测试运行期间生成报告。 Maven的构建生命周期包含自己的阶段可以在测试阶段之前进行准备 测试和集成测试 。 测试阶段的准备阶段称为过程测试类 集成测试阶段的准备阶段称为集成前测试。 在这两个阶段中我们绑定了Jacoco Maven插件因此此插件的配置类似于以下代码片段同样它是project build plugins一节的一部分 plugingroupIdorg.jacoco/groupIdartifactIdjacoco-maven-plugin/artifactIdversion0.7.2.201409121644/versionexecutionsexecutionconfigurationdestFile${sonar.jacoco.reportPath}/configurationidpre-test/idphaseprocess-test-classes/phasegoalsgoalprepare-agent/goal/goals/execution
!-- we want to execute span classhiddenSpellError preexecute data-mce-bogus1jacoco/span:prepare-agent-integration in test phase,--
but before executing maven failsafe plugin --executionconfigurationdestFile${sonar.jacoco.itReportPath}/destFile/configurationidpre-itest/idphasepre-integration-test/phasegoalsgoalprepare-agent-integration/goal/goals/execution/executions
/plugin 配置元素destFile是应将测试报告存储到的位置的路径。 使用属性$ { sonar.jacoco.reportPath}和$ { sonar是很重要的。 jacoco.itReportPath}。 SonarQube使用这些属性来查找可视化的测试报告。 现在我们可以运行目标mvn install并且我们的项目已构建为包含单元和集成测试并生成两个测试报告。 SonarQube测试报告可视化 现在我们想在SonarQube中可视化我们的测试报告。 因此在成功构建之后我们必须在我们的项目中运行Sonar Maven 3插件命令mvn sonarsonar 。 在SonarQube仪表板中打开项目时我们仅看到每个模块的单元测试的报告。 原因是必须在SonarQube中分别配置集成测试的报告可视化。 SonarQube文档中很好地描述了这些配置步骤。 摘要 该博客描述了如何在Maven构建期间为单元测试和集成测试生成测试报告。 在GitHub上 我托管了一个示例项目演示了所有配置步骤。 作为技术环境我使用 Maven的3.2.5 Maven插件 Maven Surefire插件 SonarQube 4.5.1 Java 7 链接 SonarQube的博客文章SonarQube中的单元测试执行 Jacoco Maven插件项目站点 Maven构建生命周期简介 Maven故障安全插件项目站点 构建助手Maven插件项目站点 有关Java Projec集成测试的代码覆盖率的 SonarQube文档 GitHub上的示例Maven项目 翻译自: https://www.javacodegeeks.com/2015/05/unit-and-integration-test-reports-for-maven-projects-in-sonarqube.html