第八章 测试

项目上线之前,都需要测试,不然心里虚啊。测试有很多中,单元测试、集成测试、功能测试等等。maven能与主流的单元测试框架如junit集成,能自动运行单元测试,无需我们手工执行单元测试方法,还能自动生成测试报告、测试覆盖率等。

maven执行测试任务是用过maven-surefire-plugin插件来完成的。maven-surefire-plugin插件的test目标与default生命周期的test阶段绑定,可运行test执行测试。因此,当我们在命令行输出mvn clean test时,其实执行的是maven-surefire-plugin插件的test目标。

默认情况下,maven-surefire-plugin插件的test目标会自动执行测试源码路径(src/test/java)下符合命名模式的类

**/Test*.java

**/*Test.java

**/*TestCase.java

因此,我们要新建单元测试,只需要在src/test/java下新建满足命名模式的单元测试类,然后运行mvn test命令,maven会自动执行满足命名模式的单元测试类的方法。

跳过单元测试

如果想跳过单元测试的某个测试方法,可以在测试方法上使用@Ignore注解

如果是跳过真个测试类,有以下三种方法

1、使用-DskipTests参数,在执行构建命令时可以附加参数,如mvn clean test -DskipTests,这样就会跳过测试阶段,这是maven推荐的方式;

2、配置插件


 通过显示配置插件的方式,使用configuration配置跳过测试,覆盖插件默认的行为,这种方式是不推荐的,因为正常我们应该执行单元测试,使用插件往往会在我们没有意识到的情况下跳过了测试,而我们以为是测试通过了;

3、使用-Dmaven.tesk.skip=true参数跳过测试代码的编译,这种方式同样是不推荐的。

指定测试用例

有时候我们测试时,某个单元测试失败了,我们需要调试那个失败的测试,而成功的测试可以暂时略过,此时可以通过-D指定测试用例:

1、-Dtest=xxxTest

2、-Dtest=xxx*Test

3、-Dtest=xxx*Test,Testxxx

*用于匹配模式,匹配0或多个字符,逗号用于分隔多个单元测试类。

同样,我们可以在插件中配置包含或排除的单元测试类


 

 

测试报告及覆盖率

maven-surefire-plugin默认会在target/surefire-reports目录下生成两种格式的错误报告

  • 简单文本格式
  • 与junit兼容的xml格式

当我们在执行mvn test完后,可以在target/surefire-reports目录下查看生成的测试报告。
 我们也可以使用cobertura-maven-plugin插件生成测试报告覆盖率



 

猜你喜欢

转载自ywu.iteye.com/blog/2345482