maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明

时间:2023-03-09 18:10:17
maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明

POM中配置的如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
</plugin>
  • 为了让junit单元测试完成时,可以生成报告,必须对工程中src/test/java的class文件如此命名:

**/Test*.java:任何子目录下所有命名以Test开关的Java类。 
**/Test.java:任何子目录下所有命名以Test结尾的Java类。 
*
/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类。

在通过mvn test执行了单元测试后,将会在工程的父级目录target/中生成surefire-reports子文件夹(包含.txt和.xml两种形式) 
注意:如果不以上方的方式命名,不会生成报告;若引用的为Testng框架则不受此约束

其实以上都是为了在已配置的sonarqube平台中'代码覆盖率'作准备工作的,那么接下来最后执行如此即可:

 mvn clean test cobertura:cobertura -Dcobertura.report.format=xml sonar:sonar
附上一个Demo示例图 

maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明 
maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明

以上是本人花了两天时间总结而来的精华,翻阅了大量的网络资料。最后附上一个在实施完成之后的文章,个人推荐:http://seanzhou.iteye.com/blog/1393858

另外,Demo的pom.xml写得并没有网上的那么复杂,如下:

 <?xml version="1.0" encoding="UTF-8"?>

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <modelVersion>4.0.0</modelVersion>

 <groupId>SelfAnyTest</groupId>

 <artifactId>SelfAnyTest</artifactId>

 <version>0.0.1-SNAPSHOT</version>

 <name>SelfAnyTest</name>

 <description>非项目用的测试与调试工程</description>

 <dependencies>

 <dependency>

 <groupId>junit</groupId>

 <artifactId>junit</artifactId>

 <version>4.12</version>

 <scope>test</scope>

 </dependency>

 </dependencies>

 <distributionManagement>

 <snapshotRepository>

 <id>ossrh</id>

 <url>https://oss.sonatype.org/content/repositories/snapshots</url>

 </snapshotRepository>

 <repository>

 <id>ossrh</id>

 <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>

 </repository>

 </distributionManagement>

 <build>

 <resources>

 <resource>

 <directory>src/main/resources</directory>

 </resource>

 </resources>

 <plugins>

 <plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-source-plugin</artifactId>

 <version>2.2.1</version>

 </plugin>

 <plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-javadoc-plugin</artifactId>

 <version>2.9.1</version>

 </plugin>

 <plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-compiler-plugin</artifactId>

 <version>3.3</version>

 <!-- <configuration>

 <source>1.7</source>

 <target>1.7</target>

 <compilerId>eclipse</compilerId>

 </configuration> -->

 <dependencies>

 <dependency>

 <groupId>org.codehaus.plexus</groupId>

 <artifactId>plexus-compiler-eclipse</artifactId>

 <version>2.5</version>

 </dependency>

 </dependencies>

 </plugin>

 <plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-surefire-plugin</artifactId>

 <version>2.19</version>

 </plugin>

 </plugins>

 </build>

 </project>

因为maven有很多依赖可以非显示的写入,具体的受限于精力及非服务需要,未作探究。