maven(20)-surefire测试

我在19篇生命周期讲过,当执行package或install的时候会自动执行测试,而测试周期的内置插件就是surefire。

pom.xml

surefire可以执行junit测试用例,首先引入junit依赖

  1. <dependency>
  2. <groupId>junit </groupId>
  3. <artifactId>junit </artifactId>
  4. <version>4.12 </version>
  5. <scope>test </scope>
  6. </dependency>

测试用例

surefire默认会执行src/test/java目录中符合以下命名规则的测试类。

**/Test*.java:所有以Test开头的类

**/*Test.java:所有以Test结尾的类

**/*TestCase.java:所有以TestCase结尾的类

如上图:我现在创建一个HelloTest,以Test结尾,会被surefire生命周期触发,代码如下

  1. public class HelloTest {
  2. ResourceBundle bundle;
  3. //在测试之前执行一些初始化工作
  4. @Before
  5. public void before(){
  6. bundle = ResourceBundle.getBundle( "config/application");
  7. }
  8. //测试方法,一个类中可以有多个测试方法
  9. @Test
  10. public void hello(){
  11. Assert.assertEquals( "test",bundle.getString( "spring.profiles.active"));
  12. }
  13. //在测试之后执行
  14. @After
  15. public void after(){
  16. System.out.println( "end");
  17. }
  18. }

在@Before中初始化,获取以下properties文件  

在@Test中,比较properties中的spring.profiles.active参数值是否是test,是则测试成功,不是则测试失败。

16篇中讲过,一个项目可以有多个不同的环境,如果要把项目发布到测试服务器,需要先把开发环境改成测试环境。有时候会忘了改,这个用例的作用就是在发布前,检查properties参数配置是否是test环境,以防止将错误的环境打包发布。

执行测试

19篇讲过,在生命周期中,如果执行测试阶段之后的命令如package和install,会先自动执行surefire测试,如果测试成功,会顺利向后执行。如果测试不成功,程序会报错并终止执行。现在执行package命令。


以上是我的执行结果,在2.错误原因中可以看到,发布的预期值是test,但是我properties文件中的参数值实际是dev,说明环境配置是错的,不能发布。这个测试报告会保存到target\surefire-reports目录。


如上图,其中txt文件是文本格式的错误报告,xml文件则可以在eclipse中通过junit窗口打开查看错误报告

surefire插件常用配置

19篇讲过,在自己项目的pom.xml中配置内置插件参数,可以覆盖默认的参数,以下是几个比较有用的配置
  1. <plugin>
  2. <groupId>org.apache.maven.plugins </groupId>
  3. <artifactId>maven-surefire-plugin </artifactId>
  4. <version>2.20 </version>
  5. <configuration>
  6. <!-- 改变测试用例的默认命名规则,只执行Test结尾的测试 -->
  7. <includes>
  8. <include>**/*Test.java </include>
  9. </includes>
  10. <!-- 排除测试用例,虽然以Test结尾,但是不会执行 -->
  11. <excludes>
  12. <exclude>hello/HelloTest.java </exclude>
  13. </excludes>
  14. <!-- 跳过生命周期的测试阶段 -->
  15. <skip>true </skip>
  16. </configuration>
  17. </plugin>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值