欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)單了解Java斷言利器AssertJ原理及用法

 更新時(shí)間:2020年11月06日 10:07:58   作者:shuzihua  
這篇文章主要介紹了簡(jiǎn)單了解Java斷言利器AssertJ原理及用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

AssertJ是我目前見過(guò)的最強(qiáng)大的斷言api,沒(méi)有之一。

官網(wǎng)傳送門

為什么使用assertJ?

1、流式斷言,代碼即用例,直觀易懂。

舉個(gè)例子:

傳統(tǒng)的junit或者testng,判斷一個(gè)字符串包不包括a跟b兩個(gè)字符。要這么寫

assertTrue(stringbuffer.contains("a") && stringbuffer.contains("b"))

而如果你用的assertJ

assertThat(stringbuffer).contains("a").contains("b").as("判斷字符串是否包括a|b")

相比之下,顯然后者更加容易理解。而且as的注釋更是讓斷言清晰

2、方便定制的斷言器

試想一下。當(dāng)你在做接口測(cè)試的時(shí)候,還在到處寫著

JSONPath.eval(JSONObject.parse(String),"$yourpath").tostring.equals(expectString)

你的接口自動(dòng)化里邊。到處都是這些看都不想看的json解析,判斷。然而,當(dāng)你有了assertJ,你可以自定義你的斷言,盡可能的簡(jiǎn)化你的測(cè)試代碼,可讀性將能幾何倍數(shù)提升。下邊是我自己寫的一個(gè)針對(duì)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ù)判斷增強(qiáng) 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é)點(diǎn)
   */
  public AbstractCharSequenceAssert<?, String> jsonPathAsString(String path) {
    return Assertions.assertThat((String) JSONPath.eval(getJSON(actual), path));
  }

  /**
   * 提取boolean節(jié)點(diǎn)
   */

  public AbstractBooleanAssert<?> jsonPathAsBoolean(String path) {
    return Assertions.assertThat((boolean) JSONPath.eval(getJSON(actual), path));
  }



  /**
   * 提取數(shù)字節(jié)點(diǎn)
   *
   */
  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;
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論