2. 其他常用注解:
2.1. @BeforeClass 和@AfterClass
JUnit4引入了一个JUnit3中没有的新特性——类范围的 setUp() 和tearDown() 方法。任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用 @AfterClass 注释的方法都将在该类中的所有测试都运行之后刚好运行一次。
2.2.@Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
2.3.@Test(timeout=毫秒) 允许程序运行的时间。
2.4.@Test(excepted=XX.class) 在运行时忽略某个异常。
2.5.参数化设置:需要测试的仅仅是测试数据,代码结构是不变的,只需要更改测试数据。用法如下:
在单元测试类前注解:@RunWith(Parameterized.class),然后构造需参数化的构造器。写个函数用于输入需要测试的参数和期待结果,并在该函数前面注解@Parameters
3. 常用的断言介绍(参考博客 http://blog.csdn.net/afeilxc/article/details/6218908 )
3.1 、assertEquals([String message],Object target,Object result)
target与result不相等,中断测试方法,输出message
assertNull 断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertEquals(a, b) 测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
assertEquals
断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
例如计算器加法功能的测试可以使用一下验证:
Assert.assertEquals(0,result);
3.2 assertTrue/False([String message],Boolean result)
Result为 false/true,中断测试方法,输出message
assertTrue
断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertFalse(a) 测试a是否为false(假),a是一个Boolean数值。
assertFalse
断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.3 assertNotNull/Null([String message],Obejct result
Retult= = null/result!=null,中断测试方法,输出message
assertNotNull(a) 测试a是否非空,a是一个对象或者null。
assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3.4 assertSame/NotSame(Object target,Object result)
Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
assertNotSame(a, b) 测试a和b是否没有都引用同一个对象。
assertNotSame
断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。
3.5 fail([String message])
中断测试方法,输出message
Fail 让测试失败,并给出指定信息。
4 开始项目demo
4.1.依赖添加 pom.xml (我把所有spring依赖都放进去了。)
4.3.3.RELEASE junit junit 4.12 test commons-io commons-io 2.5 org.springframework spring-aop ${spring.version} org.springframework spring-aspects ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-expression ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-orm ${spring.version} org.springframework spring-test ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} junit junit RELEASE
4.2 建立实体bean
package com.org.springTest;
/**
* Created by acer on 2018/2/2.
*/
public class TestBean {
private String content;
public TestBean(String content){
super();
this.content = content;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
4.3 编写配置类
/**
* Created by acer on 2018/2/2.
*/
@Configuration
public class TestConfig {
@Bean
@Profile("prod")
public TestBean prodTestBean(){
return new TestBean("prod");
}
@Bean
@Profile("dev")
public TestBean devTestBean(){
return new TestBean("dev");
}
}
4.4 鼠标放在需要测试的TestBean,快捷Alt+Insert生成测试类,如下图,在类上面配好注解
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {TestConfig.class}) @ActiveProfiles("dev")
期间遇见@Test @After注解不识别。按照错误Alt+Enter导入需要的包即可
4.5 运行测试结果