摘要:地址是提供的方便測試序列化反序列化的測試工具,在的文檔中有一些介紹。例子簡單例子源代碼見使用通包下的文件測試結果是否正確或者使用基于的校驗例子測試可以用來測試。這個例子里使用了自定義的測試代碼例子使用事實上也可以配合一起使用。
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例子2: 測試@JsonComponentjson; @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); } }
@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例子3: 使用@ContextConfigurationjson; @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); } }
事實上@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
摘要:地址提供了,能夠很方便的來測試。同時也提供了更進一步簡化了測試需要的配置工作。本章節將分別舉例說明在不使用和使用下如何對進行測試。例子測試的關鍵是使用對象,利用它我們能夠在不需啟動容器的情況下測試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來測試Controller。同時Spring...
摘要:因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關閉。 Github地址 在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到: 除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產配置保持一致。比如如果生產...
摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產生一些奇怪的問題。 Github地址 既然我們現在開發的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特...
摘要:地址在使用工具中提到在測試代碼之間盡量做到配置共用。本章將列舉幾種共享測試配置的方法我們可以將測試配置放在一個里,然后在測試或中引用它。也可以利用的及自定義機制,提供自己的用在測試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機制,Ap...
摘要:地址可以用來覆蓋掉來自于系統環境變量系統屬性的屬性。同時優先級高于。利用它我們可以很方便的在測試代碼里微調模擬配置比如修改操作系統目錄分隔符數據源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔 Github地址 @TestPropertySource可以用來覆蓋掉來自于系統環境變量、Java系統屬性、@PropertySource的屬性。 同時@TestPropertySou...
閱讀 2654·2023-04-25 15:22
閱讀 2824·2021-10-11 10:58
閱讀 1045·2021-08-30 09:48
閱讀 1851·2019-08-30 15:56
閱讀 1730·2019-08-30 15:53
閱讀 1089·2019-08-29 11:16
閱讀 1048·2019-08-23 18:34
閱讀 1638·2019-08-23 18:12