所有定制Jackson2ObjectMapperBuilder在集成测试springboot无法识别
我在Spring的主引导程序类,如下定制Jackson2ObjectMapperBuilder
。
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
public void configureJackson(Jackson2ObjectMapperBuilder builder) {
builder.filters(new SimpleFilterProvider().addFilter("customFilter", new ExampleFilter()));
}
其中ExampleFilter
是SimpleBeanPropertyFilter
的延伸。 我的POJO注有Jackson的@JsonFilter("customFilter")
。
我已经使用@RestController
和@GetMapping
注释通过HTTP公开了POJO。 这工作正常,当我运行应用程序并访问终点时,调用自定义筛选器。
现在我有一个如下所示的集成测试。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class IntegrationTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void getUser() throws Exception {
POJO obj = this.restTemplate.getForObject("http://localhost:" + this.port + "/pojo", POJO.class);
Assertions.assertThat(obj).isNotNull();
Assertions.assertThat(obj.getFirstName()).isEqualTo("Jane");
Assertions.assertThat(obj.getLastName()).isEqualTo("Doe");
Assertions.assertThat(obj.getAge()).isEqualTo("24");
}
}
当我运行测试,obj的当属无效,我看到一个错误,no FilterProvider configured
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured
什么我做错了,我怎么纠正呢?
我的文件夹结构是:
的src /主/ JAVA/COM/A/B/C/Application.java
的src /主/ JAVA/COM/A/B/C /控制器/ ControllerA.java
的src /测试/ JAVA/COM/A/b/C /控制器/ IntegrationTest.java