AssertJ是一个Java库,它提供了一组丰富的断言和真正有用的错误消息,提高了测试代码的可读性。主要用于替换junit中的assert断言。
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.21.0</version>
<scope>test</scope>
</dependency>
Assertions是您开始使用AssertJ时唯一需要的类,它提供了您需要的所有方法。
导包:import static org.assertj.core.api.Assertions.*;
对基本数据类型,复杂数据 类型,时间date,数字函数,类calss,对象object,文件File,输入流InputStream等支持,范围很广。
对于断言描述的情况进行添加说明,而不只是默认的true或者false判断。使用as关键字
as(字符串描述,对象…参数)
demo
HashMap<Object, Object> map = new HashMap<>();
map.put("name","xm");
assertThat(map.get("name")).as("check your %s name",map.get("name"))
.isEqualTo("xh"); //期望值
@Test
public void first(){
int a=1;
int d =3;
assertThat(a).isEqualTo(d);
}
@Test
public void testString() {
String str = null;
// 断言null或为空字符串
assertThat(str).isNullOrEmpty();
// 断言空字符串
assertThat("").isEmpty();
// 断言字符串相等 断言忽略大小写判断字符串相等
assertThat("Frodo").isEqualTo("Frodo").isEqualToIgnoringCase("frodo");
// 断言开始字符串 结束字符穿 字符串长度
assertThat("Frodo").startsWith("Fro").endsWith("do").hasSize(5);
// 断言包含字符串 不包含字符串
assertThat("Frodo").contains("rod").doesNotContain("fro");
// 断言字符串只出现过一次
assertThat("Frodo").containsOnlyOnce("do");
// 判断正则匹配
assertThat("Frodo").matches("..o.o").doesNotMatch(".*d");
}
/*collections测试*/
@Test
public void three(){
ArrayList<Integer> objects = new ArrayList<>();
objects.add(1);
objects.add(2);
assertThat(1).isIn(objects);
assertThat(3).isNotIn(objects);
assertThat(objects).isInstanceOf(List.class);
assertThat(objects).contains(1);
ArrayList<Integer> objects2 = new ArrayList<>();
objects2.add(1);
objects2.add(2);
/*用于两个集合(对象)间的测试*/
assertThat(objects).isEqualTo(objects2);
}
@Test
public void testClass1() {
// 断言 是注解
assertThat(Magical.class).isAnnotation();
// 断言 不是注解
assertThat(Rings.class).isNotAnnotation();
// 断言 存在注解
assertThat(Rings.class).hasAnnotation(Magical.class);
// 断言 不是借口
assertThat(Rings.class).isNotInterface();
// 断言 是否为指定Class实例
assertThat("string").isInstanceOf(String.class);
// 断言 类是给定类的父类
assertThat(Person.class).isAssignableFrom(Employee.class);
}
@Magical
public enum Rings {
oneRing, vilya, nenya, narya, dwarfRing, manRing;
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Magical {}
public class Person {}
public class Employee extends Person {}