配置未应用于jacksontester但应用于jackson

时间:2017-10-30 17:14:51

标签: java json spring-boot jackson

我在弹簧启动时使用JacksonTester时遇到问题。我不想在我的序列化对象上保留null属性,所以我在application.properties和application-test.properties上都设置了这个属性。

spring.jackson.default-property-inclusion=non_null

问题是配置在默认环境中按预期工作,但未在测试环境中应用。请注意,我使用JacksonTester来测试我的代码。

这是一个显示我的问题的简短示例:

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@JsonTest
public class PanelistDTOJsonTest {

    @Autowired
    private JacksonTester<PanelistDTOOutput> jsonOutput;


    @Test
    public void testSerializeToOutputWithTokenNull() throws Exception {

        PanelistDTOOutput panelist = new PanelistDTOOutput();

        // This test should pass but the property spring.jackson.default-property-inclusion=non_null is ignored by JakcsonTester
        assertThat(this.jsonOutput.write(panelist)).doesNotHaveEmptyJsonPathValue("@.token");

    }
}

PanelistDTOOutput是一个简单的类:

public class PanelistDTOOutput  {


private String token;
private String created;
private String id;

public PanelistDTOOutput() {
}



public String getToken() {
    return token;
}

public void setToken(String token) {
    this.token = token;
}


}

测试未通过以下错误消息传递:

java.lang.AssertionError: Expected a non-empty value at JSON path "@.token" but found: null

生成的JSON如下:

{"id":null,"created":null,"token":null}

请注意我使用的是spring-boot 1.5.4和jackson 2.9.1。

0 个答案:

没有答案