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平台中'代码覆盖率'作准备工作的,那么接下来最后执行如此即可:

1 mvn clean test cobertura:cobertura -Dcobertura.report.format=xml sonar:sonar
View Code

附上一个Demo示例图 

替代文字 
替代文字

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

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

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 
  3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 
  5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6 
  7 <modelVersion>4.0.0</modelVersion>
  8 
  9 <groupId>SelfAnyTest</groupId>
 10 
 11 <artifactId>SelfAnyTest</artifactId>
 12 
 13 <version>0.0.1-SNAPSHOT</version>
 14 
 15 <name>SelfAnyTest</name>
 16 
 17 <description>非项目用的测试与调试工程</description>
 18 
 19 <dependencies>
 20 
 21 <dependency>
 22 
 23 <groupId>junit</groupId>
 24 
 25 <artifactId>junit</artifactId>
 26 
 27 <version>4.12</version>
 28 
 29 <scope>test</scope>
 30 
 31 </dependency>
 32 
 33 </dependencies>
 34 
 35 <distributionManagement>
 36 
 37 <snapshotRepository>
 38 
 39 <id>ossrh</id>
 40 
 41 <url>https://oss.sonatype.org/content/repositories/snapshots</url>
 42 
 43 </snapshotRepository>
 44 
 45 <repository>
 46 
 47 <id>ossrh</id>
 48 
 49 <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
 50 
 51 </repository>
 52 
 53 </distributionManagement>
 54 
 55 <build>
 56 
 57 <resources>
 58 
 59 <resource>
 60 
 61 <directory>src/main/resources</directory>
 62 
 63 </resource>
 64 
 65 </resources>
 66 
 67 <plugins>
 68 
 69 <plugin>
 70 
 71 <groupId>org.apache.maven.plugins</groupId>
 72 
 73 <artifactId>maven-source-plugin</artifactId>
 74 
 75 <version>2.2.1</version>
 76 
 77 </plugin>
 78 
 79 <plugin>
 80 
 81 <groupId>org.apache.maven.plugins</groupId>
 82 
 83 <artifactId>maven-javadoc-plugin</artifactId>
 84 
 85 <version>2.9.1</version>
 86 
 87 </plugin>
 88 
 89 <plugin>
 90 
 91 <groupId>org.apache.maven.plugins</groupId>
 92 
 93 <artifactId>maven-compiler-plugin</artifactId>
 94 
 95 <version>3.3</version>
 96 
 97 <!-- <configuration>
 98 
 99 <source>1.7</source>
100 
101 <target>1.7</target>
102 
103 <compilerId>eclipse</compilerId>
104 
105 </configuration> -->
106 
107 <dependencies>
108 
109 <dependency>
110 
111 <groupId>org.codehaus.plexus</groupId>
112 
113 <artifactId>plexus-compiler-eclipse</artifactId>
114 
115 <version>2.5</version>
116 
117 </dependency>
118 
119 </dependencies>
120 
121 </plugin>
122 
123 <plugin>
124 
125 <groupId>org.apache.maven.plugins</groupId>
126 
127 <artifactId>maven-surefire-plugin</artifactId>
128 
129 <version>2.19</version>
130 
131 </plugin>
132 
133 </plugins>
134 
135 </build>
136 
137 </project>
View Code

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

原文地址:https://www.cnblogs.com/hailongchen/p/5242163.html