定义:
1.JUnit4.*引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活;
2.使用全新的断言语法:assertThat,结合Hamcest提供的匹配符,只用这一个方法,就可以实现所有的测试;
3.assertThat语法如下:
assertThat(T actual, Matcher matcher);
assertThat(String reason, T actual, Matcher matcher);
其中actual为需要测试的变量,matcher为使用Hamcrest的匹配符来表达变量actual期望值的声明;
4.注意事项:
a.必须导入JUnit4.4之后的版本才能使用assertThat方法;
b.不需要继承TestCase类,但是需要测试方法前必须加“@Test”。
注解:
@Before | 初始化方法 |
---|---|
@After | 释放资源 |
@Test | 测试方法,在这里可以测试期望异常和超时时间 |
@Ignore | 忽略的测试方法 |
@BeforeClass | 针对所有测试,只执行一次,且必须为static void |
@AfterClass | 针对所有测试,只执行一次,且必须为static void |
@RunWith | 指定测试类使用某个运行器 |
@Parameters | 指定测试类的测试数据集合 |
@Rule | 允许灵活添加或重新定义测试类中的每个测试方法的行为 |
@FixMethodOrder | 指定测试方法的执行顺序 |
一个测试类单元测试的执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
代码:
sercice代码:
public class DemoService{
public int add(int a, int b) {
return a+b;
}
public double div(double a, double b) {
return a / b;
}
public String getName(String name) {
return name;
}
public List<String> getList(String item) {
List<String> l = new ArrayList<String>();
l.add(item);
return l;
}
public Map<String, String> getMap(String key, String value) {
Map<String, String> m = new HashMap<String, String>();
m.put(key, value);
return m;
}
}
测试代码
public class Testas {
@Test
public void testAdd() {
int s = new DemoService().add(1,2);
//allOf:所有条件必须都成立,测试才通过
assertThat(s,allOf(greaterThan(1),lessThan(5)));
//anyOf:只要有一个条件成立,测试就通过
assertThat(s,anyOf(greaterThan(1),lessThan(5)));
//anything:无论什么条件,测试都通过
assertThat(s, anything());
//is:变量的值等于指定值时,测试通过
assertThat(s, is(3));
//is匹配符简写,is(equalTo(x))的简写,断言testedValue等于expectedValue
int testedValue = 6;
int expectedValue = 6;
assertThat(testedValue, is(expectedValue));
//not:和is相反,变量的值不等于指定值时,测试通过
assertThat(s, not(1));
}
@Test
public void testDiv(){
//数值匹配符
double d = new DemoService().div(10, 3);
//closeTo:浮点型变量的值在3.0±0.5范围内,测试通过
assertThat(d, closeTo(3.0, 0.5));
//greaterThan:变量的值大于指定值时,测试通过
assertThat(d, greaterThan(3.0));
//lessThan:变量的值小于指定值时,测试通过
assertThat(d, lessThan(3.5));
//greaterThanOrEuqalTo:变量的值大于等于指定值时,测试通过
assertThat(d, greaterThanOrEqualTo(3.3));
//lessThanOrEqualTo:变量的值小于等于指定值时,测试通过
assertThat(d, lessThanOrEqualTo(3.4));
}
@Test
public void testString(){
//字符串匹配符
String n = new DemoService().getName("Magci"