maven(20)-surefire测试

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

pom.xml

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

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

测试用例

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

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

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

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

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

public class HelloTest {
	
	ResourceBundle bundle;
	
	//在测试之前执行一些初始化工作
	@Before
	public void before(){
		bundle = ResourceBundle.getBundle("config/application");
	}
	
	//测试方法,一个类中可以有多个测试方法
	@Test
	public void hello(){
		Assert.assertEquals("test",bundle.getString("spring.profiles.active"));
	}
	
	//在测试之后执行
	@After
	public void after(){
		System.out.println("end");
	}
}	

在@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中配置内置插件参数,可以覆盖默认的参数,以下是几个比较有用的配置
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.20</version>
				<configuration>
					<!-- 改变测试用例的默认命名规则,只执行Test结尾的测试  -->
					<includes>
						<include>**/*Test.java</include>
					</includes>
					<!-- 排除测试用例,虽然以Test结尾,但是不会执行  -->
					<excludes>
						<exclude>hello/HelloTest.java</exclude>
					</excludes>
					<!-- 跳过生命周期的测试阶段 -->
					<skip>true</skip>
				</configuration>
			</plugin>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值