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
附上一个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>
因为maven有很多依赖可以非显示的写入,具体的受限于精力及非服务需要,未作探究。
笔者:v小周与海神
未来的测试终局----就是拎着一个“工具箱”来干活的角色,最终必然是面向“产品业务”与“开发”的技能
未来的测试终局----就是拎着一个“工具箱”来干活的角色,最终必然是面向“产品业务”与“开发”的技能