1. -------------------------------------------------------
2. T E S T S
3. -------------------------------------------------------
4. Running com.liuyan.account.mail.AccountImageServiceImplTest
5. ---------------------------------1990
6. Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.926 sec
7. Running com.liuyan.account.mail.AccountImageUtilTest
8. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
9.
10. Results :
12. Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
运行报告是junit自己的报告输出,和咱们在Eclipse运行的报告差不多。以上代表运行了3个用例,和预期效果不符的是0个,失败的用例是0个,忽略的用例数是0个。
1. mvn package -DskipTests
大家可能要问,为何Maven能够自己寻找我们编写的测试类呢?其实还是那句约定大于配置。Maven自动去寻找src/test/java下面的类,当此文件夹下面的类符合以下规范,那么Maven默认认为他们是单元
测试用例类。
Test*.java:任何目录下以
Test为开始的类
*Test.java: 任何目录下以Test为结尾的类
*TestCase.java: 任何目录下以TestCase为结尾的类。
如果想在一段时间内节省项目构建时间,暂时全部忽略单元测试。那么可以在pom.xml中配置如下
1. <build> 2. <plugins> 3. <plugin> 4. <groupId>org.apache.maven.plugins</groupId> 5. <artifactId>maven-surefire-plugin</artifactId> 6. <version>2.5</version> 7. <configuration> 8. <skipTests>true</skipTests> 9. </configuration> 10. </plugin> 11. </plugins> 12. </build> |
等到项目完全开发完了,需要测试用例的时候将其注释掉即可。
本个模块有两个测试用例类,如果仅仅想运行一个测试用例该怎么办。运行下面命令
1. test -Dtest=AccountImageServiceImplTest
这个是指定具体运行哪个测试用例。当然需要将pom文件中忽略测试用例的配置注释掉。
也可以测试多个测试用例
1. mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest
也可以使用模糊匹配进行测试
1. mvn test -Dtest=*Test
1. <build> 2. <plugins> 3. <plugin> 4. <groupId>org.apache.maven.plugins</groupId> 5. <artifactId>maven-surefire-plugin</artifactId> 6. <version>2.5</version> 7. <configuration> 8. <includes> 9. <include>**/*Test.java</include> 10. </includes> 11. <excludes> 12. <exclude>**/AccountImageUtilTest.java</exclude> 13. </excludes> 14. </configuration> 15. </plugin> 16. </plugins> 17. </build> |
includes是需要测试的类,excludes是要排除之外测试用例。可以使用模糊匹配。**用来匹配任意件路经,*匹配任意类。
Junit的单元测试报告:
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>2.12.2</version> <configuration> <showSuccess>false</showSuccess> </configuration> </plugin> </plugins> </reporting> |
这个默认生成的报告是txt,要生成html的报告需要使用命令mvn surefire-report:report. 这会在target/site下面生成html的报告
后来经测试发现,其实maven-surefire-plugin就已经可以生成txt和xml的测试结果,如果要html的报告才需要maven-surefire-report-plugin
4. 测试报告
基本的测试报告上面已经介绍过了,下面我们看看测试覆盖率的报告。运行如下命令
1. mvn cobertura:cobertura
pom配置
<project> ... <reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin> </plugins> </reporting> ... </project> |
常用命令
mvn cobertura:help 查看cobertura插件的帮助
mvn cobertura:clean 清空cobertura插件运行结果
mvn cobertura:check 运行cobertura的检查任务
mvn cobertura:cobertura 运行cobertura的检查任务并生成报表,报表生成在target/site/cobertura目录下
cobertura:dump-datafile Cobertura Datafile Dump Mojo
mvn cobertura:instrument Instrument the compiled classes
在target文件夹下出现了一个site目录,下面是一个静态站点,里面就是单元测试的覆盖率报告。
详细配置还可参考:http://zhanshenny.iteye.com/blog/1440571
5. 总结
这次我们介绍了Maven的测试,可以运行项目的单元测试用例,并生成报告。使用者可以根据自己的需要配置测试选项以满足项目的测试需求。最后说一下,测试十分重要,往往大手笔的产品测试人员和开发人员的比例是2:1。