JUnit4中使用Hamcrest测试框架的assertThat断言 小实例
?1.JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,這些匹配符更接近自然語言,可讀性高,更加靈活;
2.使用全新的斷言語法:assertThat,結合Hamcest提供的匹配符,只用這一個方法,就可以實現(xiàn)所有的測試;
3.assertThat語法如下:
???? assertThat(T actual, Matcher<T> matcher);
???? assertThat(String reason, T actual, Matcher<T> matcher);
???? 其中actual為需要測試的變量,matcher為使用Hamcrest的匹配符來表達變量actual期望值的聲明;
4.注意事項:
???? a.必須導入JUnit4.4之后的版本才能使用assertThat方法;
???? b.不需要繼承TestCase類,但是需要測試方法前必須加“@Test”。
實例:
public class C {
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;
}
}
?import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class CTest {
@Test
public void testAdd() {
?? //一般匹配符
?? int s = new C().add(1, 1);
?? //allOf:所有條件必須都成立,測試才通過
?? assertThat(s, allOf(greaterThan(1), lessThan(3)));
?? //anyOf:只要有一個條件成立,測試就通過
?? assertThat(s, anyOf(greaterThan(1), lessThan(1)));
?? //anything:無論什么條件,測試都通過
?? assertThat(s, anything());
?? //is:變量的值等于指定值時,測試通過
?? assertThat(s, is(2));
?? //not:和is相反,變量的值不等于指定值時,測試通過
?? assertThat(s, not(1));
?? //數(shù)值匹配符
?? double d = new C().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));
?? //字符串匹配符
?? String n = new C().getName("Magci");
?? //containsString:字符串變量中包含指定字符串時,測試通過
?? assertThat(n, containsString("ci"));
?? //startsWith:字符串變量以指定字符串開頭時,測試通過
?? assertThat(n, startsWith("Ma"));
?? //endsWith:字符串變量以指定字符串結尾時,測試通過
?? assertThat(n, endsWith("i"));
?? //euqalTo:字符串變量等于指定字符串時,測試通過
?? assertThat(n, equalTo("Magci"));
?? //equalToIgnoringCase:字符串變量在忽略大小寫的情況下等于指定字符串時,測試通過
?? assertThat(n, equalToIgnoringCase("magci"));
?? //equalToIgnoringWhiteSpace:字符串變量在忽略頭尾任意空格的情況下等于指定字符串時,測試通過
?? assertThat(n, equalToIgnoringWhiteSpace(" Magci?? "));
?? //集合匹配符
?? List<String> l = new C().getList("Magci");
?? //hasItem:Iterable變量中含有指定元素時,測試通過
?? assertThat(l, hasItem("Magci"));
?? Map<String, String> m = new C().getMap("mgc", "Magci");
?? //hasEntry:Map變量中含有指定鍵值對時,測試通過
?? assertThat(m, hasEntry("mgc", "Magci"));
?? //hasKey:Map變量中含有指定鍵時,測試通過
?? assertThat(m, hasKey("mgc"));
?? //hasValue:Map變量中含有指定值時,測試通過
?? assertThat(m, hasValue("Magci"));
}
}
?
原文:http://hi.baidu.com/jnshiyanlvting/blog/item/f0273d3caaa100eb838b13c3.html
轉載于:https://blog.51cto.com/2005713/518581
總結
以上是生活随笔為你收集整理的JUnit4中使用Hamcrest测试框架的assertThat断言 小实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软算法面试题(2)
- 下一篇: DIY走向高端化:用料成为比拼焦点