共计 2470 个字符,预计需要花费 7 分钟才能阅读完成。
这又是一个系列,一个要把 Maven 讲透的系列,希望能够对大家有帮助!
前言
关于使用 Maven 进行测试,我本来是不想总结的,然后考虑到这个功能在实际开发中还经常使用,或者说,有的同学毕业后得第一份正式工作就是搞测试,编码写测试用例(其实我就是这样的)。所以,结合我自身的工作经历来看,我个人是非常崇尚测试,重视测试的,所以,这里我再通过这篇文章,对 Maven 是如何集成测试的进行简单的总结,方便大家有一个整体的印象和大的概念。
maven-surefire-plugin
简介
通过之前的学习,我们都知道 Maven 本身并不是一个单元测试框架,在 Java 中,主流的单元测试框架是 JUnit 和 TestNG。而 Maven 所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行 JUnit 或者 TestNG 的测试用例。而这一常用的插件就是maven-surefire-plugin
。
在默认情况下,maven-surefire-plugin
的 test 目标会自动执行测试源码路径下所有符合一组命名模式的测试类。这组模式为:
-
**/Test*.java
:任何子目录下所有命名以 Test 开头的 Java 类 -
**/*Test.java
:任何子目录下所有命名以 Test 结尾的 Java 类 -
**/*TestCase.java
:任何子目录下所有命名以 TestCase 结尾的 Java 类
只要将测试类按照上述模式命名,Maven 就能自动运行它们,用户也就不再需要定义聚合测试用例。
为了能够运行测试,Maven 需要在项目中引入测试框架的依赖,在前面的文章都有说到,这里就不再总结。
跳过测试
有的时候,我说的是有些时候哈,为了更快的完成构建,我们会跳过费时的测试阶段,这个时候,我们只需要在执行 mvn
命令时加上 skipTests
参数即可,比如这样:
mvn clean package -DskipTests
或者,我们也可以在 POM 中对插件进行配置,比如这样:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
动态指定要运行的测试用例
上面直接跳过全部测试,这样的确有点极端,很多时候,我们增加了一个测试类,为了节省时间,就不想将所有的测试用例都运行一篇,而只是将新增的测试类运行一遍就 OK 了,这个时候我们就需要动态指定要运行的测试用例。
maven-surefire-plugin
提供了一个 test 参数让 Maven 用户能够在命令行指定要运行的测试用例。比如这样:
mvn test -Dtest=LoginTest
这里 test 参数的值是测试用例的类名,这行命令的效果就是只有 LoginTest 这一个测试类得到运行。当然了,maven-surefire-plugin
的 test 参数还支持一些高级的赋值模式,比如这样:
mvn test -Dtest=Admin*Test
星号可以匹配零个或多个字符,上述命令会运行项目中所有类名以 Admin 开头、Test 结尾的测试类。除了星号匹配,还可以使用逗号指定多个测试用例:
mvn test -Dtest=LoginTest,AdminSearchTest
包含与排除测试用例
通过命令行动态指定要运行的测试用例确实不错,但是如果要动态指定运行的测试用例比较多时,通过命令就比较麻烦;换一种方式来思考,那就是如何排除指定的测试用例呢?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<excludes>
<exclude>**/LoginTest.java</exclude>
<exclude>**/Admin*Test.java</exclude>
</excludes>
</configuration>
</plugin>
有了上面所示的 excludes
配置后,maven-surefire-plugin
就不再自动运行它们了。
测试报告
在我以前的东家,如果需要安排系统上线,就必须要提交系统测试报告。而通过 maven-surefire-plugin
插件,就可以生成简单明了的系统测试报告。默认情况下,maven-surefire-plugin
会在项目的 target/surefire-reports 目录下生成两种格式的错误报告:
-
简单文本格式
简单的文本格式信息如下:------------------------------------------------------------------------------- Test set: com.jellythink.HelloWorld.AppTest ------------------------------------------------------------------------------- Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec
- 与 JUnit 兼容的 XML 格式
XML 格式的测试报告主要是为了支持工具的解析。
上面就看个人项目的需要了,按照需要生成即可,非常的方便。
总结
这篇文章主要总结了 Maven 中的测试,具体的就是围绕着 maven-surefire-plugin
这个官方默认插件进行的总结。这里总结的测试,在你将来的职业生涯中不一定会遇到或者使用到,但是至少我这里总结的内容会对你以后的工作可以提供一点点的指点,那就足够了!
果冻想,玩代码,玩即使!
2019 年 4 月 28 日,于内蒙古呼和浩特。