簡單了解Java斷言利器AssertJ原理及用法
AssertJ是我目前見過的最強大的斷言api,沒有之一。
官網(wǎng)傳送門
為什么使用assertJ?
1、流式斷言,代碼即用例,直觀易懂。
舉個例子:
傳統(tǒng)的junit或者testng,判斷一個字符串包不包括a跟b兩個字符。要這么寫
assertTrue(stringbuffer.contains('a') && stringbuffer.contains('b'))
而如果你用的assertJ
assertThat(stringbuffer).contains('a').contains('b').as('判斷字符串是否包括a|b')
相比之下,顯然后者更加容易理解。而且as的注釋更是讓斷言清晰
2、方便定制的斷言器
試想一下。當(dāng)你在做接口測試的時候,還在到處寫著
JSONPath.eval(JSONObject.parse(String),'$yourpath').tostring.equals(expectString)
你的接口自動化里邊。到處都是這些看都不想看的json解析,判斷。然而,當(dāng)你有了assertJ,你可以自定義你的斷言,盡可能的簡化你的測試代碼,可讀性將能幾何倍數(shù)提升。下邊是我自己寫的一個針對json的自定義斷言器:
import java.math.BigDecimal;import org.assertj.core.api.AbstractAssert;import org.assertj.core.api.AbstractBigDecimalAssert;import org.assertj.core.api.AbstractBooleanAssert;import org.assertj.core.api.AbstractCharSequenceAssert;import org.assertj.core.api.AbstractIntegerAssert;import org.assertj.core.api.Assertions;import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjson.JSONPath;/** * assertJ json數(shù)據(jù)判斷增強 eg:不提供提取數(shù)組的方法,在斷言中作用比較小 * * @author jacksoncina2008 * */public class AssertJSON extends AbstractAssert<AssertJSON, String> { protected AssertJSON(String actual) { super(actual, AssertJSON.class); // TODO Auto-generated constructor stub } public static AssertJSON assertThat(String json) { return new AssertJSON(json); } /** * 提取字符串節(jié)點 */ public AbstractCharSequenceAssert<?, String> jsonPathAsString(String path) { return Assertions.assertThat((String) JSONPath.eval(getJSON(actual), path)); } /** * 提取boolean節(jié)點 */ public AbstractBooleanAssert<?> jsonPathAsBoolean(String path) { return Assertions.assertThat((boolean) JSONPath.eval(getJSON(actual), path)); } /** * 提取數(shù)字節(jié)點 * */ public AbstractIntegerAssert<?> jsonPathAsInteger(String path) { return Assertions.assertThat((Integer) JSONPath.eval(getJSON(actual), path)); } /** * 提取小數(shù) * */ public AbstractBigDecimalAssert<?> jsonPathAsBigDecimal(String path) { return Assertions.assertThat((BigDecimal) JSONPath.eval(getJSON(actual), path)); } private JSONObject getJSON(String json) { JSONObject j = new JSONObject(); j = JSONObject.parseObject(json); return j; }}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python利用os模塊編寫文件復(fù)制功能——copy()函數(shù)用法2. php測試程序運行速度和頁面執(zhí)行速度的代碼3. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究4. 三個不常見的 HTML5 實用新特性簡介5. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁6. ajax請求添加自定義header參數(shù)代碼7. Python使用jupyter notebook查看ipynb文件過程解析8. 解決Python 進程池Pool中一些坑9. 解決python腳本中error: unrecognized arguments: True錯誤10. IntelliJ IDEA創(chuàng)建普通的Java 項目及創(chuàng)建 Java 文件并運行的教程
