国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring、Spring Boot和TestNG測試指南 - @JsonTest

Hegel_Gu / 1646人閱讀

摘要:地址是提供的方便測試序列化反序列化的測試工具,在的文檔中有一些介紹。例子簡單例子源代碼見使用通包下的文件測試結果是否正確或者使用基于的校驗例子測試可以用來測試。這個例子里使用了自定義的測試代碼例子使用事實上也可以配合一起使用。

Github地址

@JsonTest是Spring Boot提供的方便測試JSON序列化反序列化的測試工具,在Spring Boot的文檔中有一些介紹。

需要注意的是@JsonTest需要Jackson的ObjectMapper,事實上如果你的Spring Boot項目添加了spring-web的Maven依賴,JacksonAutoConfiguration就會自動為你配置一個:


  org.springframework.boot
  spring-boot-autoconfigure



  org.springframework
  spring-web

這里沒有提供關于日期時間的例子,關于這個比較復雜,可以看我的另一篇文章:Spring Boot Jackson對于日期時間類型處理的例子。

例子1:簡單例子

源代碼見SimpleJsonTest:

@SpringBootTest(classes = SimpleJsonTest.class)
@JsonTest
public class SimpleJsonTest extends AbstractTestNGSpringContextTests {

  @Autowired
  private JacksonTester json;

  @Test
  public void testSerialize() throws Exception {
    Foo details = new Foo("Honda", 12);
    // 使用通包下的json文件測試結果是否正確
    assertThat(this.json.write(details)).isEqualToJson("expected.json");
    // 或者使用基于JSON path的校驗
    assertThat(this.json.write(details)).hasJsonPathStringValue("@.name");
    assertThat(this.json.write(details)).extractingJsonPathStringValue("@.name").isEqualTo("Honda");
    assertThat(this.json.write(details)).hasJsonPathNumberValue("@.age");
    assertThat(this.json.write(details)).extractingJsonPathNumberValue("@.age").isEqualTo(12);
  }

  @Test
  public void testDeserialize() throws Exception {
    String content = "{"name":"Ford","age":13}";
    Foo actual = this.json.parseObject(content);
    assertThat(actual).isEqualTo(new Foo("Ford", 13));
    assertThat(actual.getName()).isEqualTo("Ford");
    assertThat(actual.getAge()).isEqualTo(13);

  }

}
例子2: 測試@JsonComponent

@JsonTest可以用來測試@JsonComponent。

這個例子里使用了自定義的@JsonComponent FooJsonComponent:

@JsonComponent
public class FooJsonComponent {

  public static class Serializer extends JsonSerializer {
    @Override
    public void serialize(Foo value, JsonGenerator gen, SerializerProvider serializers)
        throws IOException, JsonProcessingException {
      // ...
    }

  }

  public static class Deserializer extends JsonDeserializer {

    @Override
    public Foo deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
      // ...
    }

  }

}

測試代碼JsonComponentJsonTest:

@SpringBootTest(classes = { JsonComponentJacksonTest.class, FooJsonComponent.class })
@JsonTest
public class JsonComponentJacksonTest extends AbstractTestNGSpringContextTests {

  @Autowired
  private JacksonTester json;

  @Test
  public void testSerialize() throws Exception {
    Foo details = new Foo("Honda", 12);
    assertThat(this.json.write(details).getJson()).isEqualTo(""name=Honda,age=12"");
  }

  @Test
  public void testDeserialize() throws Exception {
    String content = ""name=Ford,age=13"";
    Foo actual = this.json.parseObject(content);
    assertThat(actual).isEqualTo(new Foo("Ford", 13));
    assertThat(actual.getName()).isEqualTo("Ford");
    assertThat(actual.getAge()).isEqualTo(13);

  }

}
例子3: 使用@ContextConfiguration

事實上@JsonTest也可以配合@ContextConfiguration一起使用。

源代碼見ThinJsonTest:

@JsonTest
@ContextConfiguration(classes = JsonTest.class)
public class ThinJsonTest extends AbstractTestNGSpringContextTests {

  @Autowired
  private JacksonTester json;

  @Test
  public void testSerialize() throws Exception {
    // ...
  }

  @Test
  public void testDeserialize() throws Exception {
    // ...
  }

}
參考文檔

Spring Framework Testing

Spring Boot Testing

@JsonTest

JsonComponent

JacksonAutoConfiguration

JacksonTester

GsonTester

BasicJsonTester

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70292.html

相關文章

  • SpringSpring BootTestNG測試指南 - 測試Spring MVC

    摘要:地址提供了,能夠很方便的來測試。同時也提供了更進一步簡化了測試需要的配置工作。本章節將分別舉例說明在不使用和使用下如何對進行測試。例子測試的關鍵是使用對象,利用它我們能夠在不需啟動容器的情況下測試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來測試Controller。同時Spring...

    andong777 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - @OverrideAutoConfi

    摘要:因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關閉。 Github地址 在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到: 除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產配置保持一致。比如如果生產...

    elisa.yang 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - 使用Spring Testing工具

    摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產生一些奇怪的問題。 Github地址 既然我們現在開發的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特...

    Maxiye 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - 共享測試配置

    摘要:地址在使用工具中提到在測試代碼之間盡量做到配置共用。本章將列舉幾種共享測試配置的方法我們可以將測試配置放在一個里,然后在測試或中引用它。也可以利用的及自定義機制,提供自己的用在測試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機制,Ap...

    CHENGKANG 評論0 收藏0
  • SpringSpring BootTestNG測試指南 - @TestPropertySourc

    摘要:地址可以用來覆蓋掉來自于系統環境變量系統屬性的屬性。同時優先級高于。利用它我們可以很方便的在測試代碼里微調模擬配置比如修改操作系統目錄分隔符數據源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔 Github地址 @TestPropertySource可以用來覆蓋掉來自于系統環境變量、Java系統屬性、@PropertySource的屬性。 同時@TestPropertySou...

    paney129 評論0 收藏0

發表評論

0條評論

Hegel_Gu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<