java测试中各类断言方式汇总 |
您所在的位置:网站首页 › java测试框架有哪些内容 › java测试中各类断言方式汇总 |
文章目录
java 自带断言testng 断言junit5 断言hamcrest 断言RESTassured 断言
![]() assert 作为 java 中的一个关键字,已经可以起到断言的作用了,如下例子 assert true; assert false; testng 断言testng 自带有断言类 Assert 类,其中有各种静态的断言方法可供使用,下面列出一些常用的 // 断言真假 Assert.assertTrue(true); // 断言匹配,前一个参数是期望值,后一个参数是实际值 Assert.assertEquals(1, 1);但是 testng 中没有函数式接口的传参,所以没法使用 lambda 表达式进行多个值的校验,所以测试中如果在一个测试用例中做多个值校验, 我们可以考虑通过设置一个 flag 标志变量来做,或者使用可以校验多个值的 junit 断言机制 junit5 断言目前本人使用的是 junit5 断言,非常灵活,使用了 Assertions 类,这个类在org.junit.jupiter.api包下,这里也列出一些常用的断言 // 判断真假 Assertions.assertTrue(true); // 断言匹配 Assertions.assertEquals(1, 1); // 使用 lambda 表达式断言多个,其中只要有一个错了,该断言就位 false Assertions.assertAll( () -> {Assertions.assertTrue(true);}, () -> {Assertions.assertEquals(1, 1);}, () -> {Assertions.assertEquals("a", "a");} );值得注意的是 junit 4.4 版本以后引入了 hamcrest 的 assertThat 断言,可以很方便人性化的断言了 hamcrest 断言Hamcrest 是一个书写匹配器对象时允许直接定义匹配规则的框架.有大量的匹配器是侵入式的,例如 UI 验证或者数据过滤,但是匹配对象在书写灵活的测试是最常用 另外值得一提的是 hamcrest 依赖已经被 springboot web 开发框架和 restassured 接口测试框架所集成 hamcrest 参数中前面是实际值,后面是期望值,后面是 matcher 比较器 // 判断相同 MatcherAssert.assertThat("b", Matchers.is("a")); // equalto 可以比较对象 MatcherAssert.assertThat("a", Matchers.equalTo("a"));还有许多各种比较器,比如 hasItem,,hasItems 测试一个集合包含一个元素等等 when(). get("/store"). then(). body("store.book.findAll { it.price < 10 }.title", hasItems("Sayings of the Century", "Moby Dick")); RESTassured 断言RESTassured 是一个接口测试框架,可以通过 mvn 依赖引入 在写 RESTassured 接口测试时候通常使用两种方式断言 方式一:直接使用 RESTassured 的 body 方法结合 hamcrest 中的比较器即可,这样不需要将断言写进 test 中也可以起到断言作用 when(). get("/store"). then(). body("store.book.findAll { it.price < 10 }.title", hasItems("Sayings of the Century", "Moby Dick"));方式二:使用 extract().response() 方法提取出 Response 类,之后在测试类中通过对 Response 进行操作结合一些断言方法即可 // 返回的是 Response when(). get("/store"). then().log(). body(). extract().response(); // 在测试类中断言,提取 json 中的 user 进行对比断言 Assert.assertEquals("xxx", response.path("user"));最后不得不提的是 REST assured 中提供非常灵活丰富的断言机制,这里不做细讲,还需要大家自行查看官网探索! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |