assertj断言机制记录
据说Junit自带org.junit.Assert断言包功能不够完善,assertj功能更强大,在官网
http://joel-costigliola.github.io/assertj/
和一些博客上进行学习、记录如下。
在IntelliJ IDEA中使用maven来下载assertj的jar包
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<!-- use x.x.x for Java 7 projects -->
<version>x.x.x</version>
<!-- <version>x.x.x</version> -->
<scope>test</scope>
</dependency>
//导入asserthat所有方法
import static org.assertj.core.api.Assertions.*;
assertThat(a).as("错误描述").method(b)
a 是实际结果,b是预期结果。实际结果符合预期结果的方法method则测试通过,否则报错输出“错误描述”。
断言所用list
list.add("test1");
list.add("test2");
list.add("test3");
list.add("test3");
listtest.add("test1");
listtest.add("test2");
listtest.add("test3");
字符串处理
assertThat("test1").isEqualTo("test1");
assertThat("test1").isSameAs("test1");
assertThat("test1").isNotEqualTo("test2");
assertThat("frodo").startsWith("fro")
.endsWith("do")
.isEqualToIgnoringCase("Frodo"); //正确,忽略大小写
// 断言包含字符串 不包含字符串
assertThat("Frodo").contains("rod").doesNotContain("fro"); //正确,会识别大小写
// 断言字符串只出现过一次
assertThat("Frododo").containsOnlyOnce("do"); // 错误栗子
//判断正则匹配
assertThat("Frodo").matches("..o.o") // 一个.代表一个字母
.doesNotMatch(".*r");//.*表示一串字母,不是以r结尾则测试通过
//.doesNotMatch(".*r.*");//错误栗子,含有字母r则不通过
list包含断言
assertThat(list).hasSize(4) .contains("test1", "test2") .containsOnly("test1", "test2", "test3") .containsExactly("test1", "test2", "test3", "test3") .containsAll(listtest) //包含listtest中的全部元素 .doesNotContain("test5"); assertThat(list).isSameAs(listtest);//
错误栗子
,两个列表所含元素有不一样的 assertThat(list) .containsOnlyOnce("test3");//错误栗子
,因为test3出现2次
数字断言
Integer num1 = null;
Integer num2 =30;
// 断言空
assertThat(num1).isNull();
// 断言非空
assertThat(num2).isNotNull();
// 断言相等
assertThat(num2).isEqualTo(30);
// 断言大于 大于等于
assertThat(num2).isGreaterThan(18)
.isGreaterThanOrEqualTo(18);
// 断言小于 小于等于
assertThat(num2).isLessThan(38)
.isLessThanOrEqualTo(38);
// 断言0
assertThat(0).isZero();
// 断言正数 非负数
assertThat(1).isPositive()
.isNotNegative();
// 断言负数 非正数
assertThat(-1).isNegative()
.isNotPositive();
// 断言区间
assertThat(0.8).isStrictlyBetween(0.0,1.0);