栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单元测试(三)AssertJ断言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单元测试(三)AssertJ断言

assertj官方文档

1:AssertJ介绍

AssertJ是一个Java库,它提供了一组丰富的断言和真正有用的错误消息,提高了测试代码的可读性。主要用于替换junit中的assert断言。

1.1:maven依赖
 
      org.assertj
      assertj-core
      3.21.0
      test
    
1.2:介绍

Assertions是您开始使用AssertJ时唯一需要的类,它提供了您需要的所有方法。

导包:import static org.assertj.core.api.Assertions.*;
1:支持的数据类型

对基本数据类型,复杂数据 类型,时间date,数字函数,类calss,对象object,文件File,输入流InputStream等支持,范围很广。

2:断言描述

对于断言描述的情况进行添加说明,而不只是默认的true或者false判断。使用as关键字

as(字符串描述,对象…参数)

demo

HashMap map = new HashMap<>();
        map.put("name","xm");
        assertThat(map.get("name")).as("check your %s name",map.get("name"))
                .isEqualTo("xh");    //期望值
2:实战 1:基本类型断言
 @Test
    public void first(){
        int a=1;
        int d =3;
        assertThat(a).isEqualTo(d);
    }
2:string的断言
@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");  
} 
3:list断言
  
    @Test
    public void three(){
        ArrayList 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 objects2 = new ArrayList<>();
        objects2.add(1);
        objects2.add(2);
        
        assertThat(objects).isEqualTo(objects2);
    }
4:class类断言
@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 {}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号