使用 Maven 进行测试

  1. 安装和配置
  2. 坐标和依赖
  3. 仓库
  4. 生命周期和插件
  5. 聚合与继承
  6. 使用 Maven 进行测试
  7. 灵活的构建
  8. Archetype
  9. 附录

使用 Maven 进行测试

  1. maven-surefire-plugin

maven-surefire-plugin 称这为测试运行器(Test Runner),它能很好的兼容 JUnit3、JUnit4 以及 TestNG。maven-surefire-plugin 的 test 目标默认和 default 生命周期的 test 阶段绑定,这是一个内置的绑定。默认情况下 maven-surefire-plugin 的 test 目标会自动执行测试源路径(默认为 src/test/java/)下所有符合一组命名模式的测试类。这组模式为:

  • **/Test*.java : 任何子目录下所有命名以Test 开头的 Java类。
  • **/*Test.java : 任何子目录下所有命名以Test 结尾的 Java类。
  • **/*TestCase.java : 任何子目录下所有命名以TestCase 结尾的 Java类。

    1. 跳过测试

实际开发中有时候可能需要跳过测试,这很简单,在命令行加入参数 skipTests 就可以了。例如:

$ mvn package -DskipTests

当然还可以在 POM 中配置 maven-surefire-plugin 插件来提供该属性,如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

但这是不推荐的做法,如果配置 POM 让项目长时间地跳过测试,那就失去测试代码的意义了。
有时候我们不仅仅想跳过测试运行,还想跳过测试代码的编译,Maven 也是允许你这么做的,如下 :

$ mvn package -Dmaven.test.skip=true

参数 maven.test.skip 同时控制了 maven-compiler-plugin 和 maven-surefire-plugin 两个插件的行为,测试代码编译跳过,测试运行也跳过了。当然 maven.test.skip 也可以在 POM 中配置,如下 :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

实际上 maven-compiler-plugin 的 compile 目标和 maven-surefire-plugin 的 test 目标都提供了一个参数 skip 用来跳过测试编译和测试运行,而这个参数对应的命令表达式 maven.test.skip。

  1. 动态指定要运行的测试用例

反复运行单个测试用例是日常开发中常见的行为。maven-surefire-plugin 提供了一个 test 参数让 Maven 用户能够在命令行指定要运行的测试用例。例如:

$ mvn test -Dtest=AppTest

这里的 test 参数的值是测试用例的类名,这行命令的效果就是只有 AppTest 这一个运行测试用例得到运行。当然 test 参数还支持高级一些的赋值方式,如下:

// 星号可以匹配堆个或多个字符,上述命令会运行项目中所有类名以 Test 结尾的测试类
$ mvn test -Dtest=*Test

// 该命令的 test 参数值是两上测试类名,它们之间用逗号隔开,其效果就是告诉 Maven  只运行这两个测试类
$ mvn test -Dtest=AppTest,UserTest

// 当然还可以结合星号和逗号使用如:
$ mvn test -Dtest=AppTest,User*

test 参数的值必须匹配一个或者多个测试类,不然就会报错并导致构建失败,但是提供了一个参数 failifNoTests=false 让没有匹配到测试类也能顺利构建,其实这也是一种跳过测试的方法。可惜的是 maven-surefire-plugin 并没有提供作保参数支持我们从命令行跳过指定的测试类,好在我们还可以通过 在 POM 中配置 maven-surefire-plugin 排除特定的测试类。

  1. 包含与排除测试用例

Maven 提倡约定优于配置的原则,因此只要符合约定命名模式的测试类就会自动执行。即便如此,maven-surefire-plugin 还是允许用户通过额外的配置来自定义一些其它的测试类,或者排除一些符合默认命名模式的测试类。配置如下 :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <includes>
            <include>**/*Tests.java</include><!---->
        </includes>
        <excludes>
            <exclude>**/AppTest.java</exclude>
        </excludes>
    </configuration>
</plugin>

上述代码中的 includes 元素用来指定那些不符合 Maven 默认命名模式的测试类,注意‘*.java*
后缀。excludes 元素用来指定那些符合 Maven 默认命名模式又不需要运行的测试类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值