AllBenutzerdefinierte Jackson2ObjectMapperBuilder nicht in einem Integrations springboot Test erkannt
I wie unten Jackson2ObjectMapperBuilder
in meiner Haupt-Frühlings-Boot-Anwendungsklasse angepasst habe.
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()));
}
wo ExampleFilter
eine Erweiterung von SimpleBeanPropertyFilter
ist. Meine POJOs sind mit Jackson @JsonFilter("customFilter")
kommentiert.
Ich habe die POJOs über HTTP mit @RestController
und @GetMapping
Annotationen ausgesetzt. Dies funktioniert einwandfrei und der benutzerdefinierte Filter wird aufgerufen, wenn ich die Anwendung ausführen und auf den Endpunkt zugreifen.
Jetzt habe ich einen Integrationstest wie folgt geschrieben.
@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");
}
}
Wenn ich den Test ausführen, die obj als null kommt, und ich sehe einen Fehler, dass 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
Was mache ich falsch und wie kann ich das korrigieren?
Meine Ordnerstruktur ist:
src/main/java/com/a/b/c/Application.java
src/main/java/com/a/b/c/Controller/ControllerA.java
src/test/java/com/a/b/c/Controller/IntegrationTest.java