全部的
我在我的主要Spring Boot应用程序类中定制了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。这很好,当我运行应用程序并访问endpoint时,会调用自定义过滤器。
现在我编写了一个集成测试,如下所示。
@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为null,我看到一个错误,没有配置FilterProvider
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/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
我通过在主应用程序文件中以略微不同的方式配置Jackson2ObjectMapperBuilder
来实现这一点,如下所示。但我仍然不知道为什么Autowire方法不起作用。
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.filters( new SimpleFilterProvider().addFilter( "customFilter", new ExampleFilter() ) );
return builder;
}
我仍然想知道,在测试环境中,为什么自动配置的Jackson2ObjectMapperBuilder
在替换为@Bean
时无法进行定制。
我正在尝试编写一个单元测试到一个自定义反序列化器,该反序列化器是使用一个带有@了的构造函数来实例化的,并且我的实体标有@JsonDesri的。它在我的集成测试中工作得很好,其中MockMvc会带来Spring serverside。 然而,在调用objectMapper.read值(…)的测试中,使用不带参数的默认构造函数的反序列化器的新实例被实例化。即使 实例化有线版本的反序列化程序,实际调用仍
与@mockbean和@spybean一样,有没有类似于@fakebean/@dummybean的东西? 其思想是,该实例是100%真实的(具有预期的生产内部状态),并且它覆盖(或者添加bean,以防在配置中没有声明)上下文中的bean。理想情况下,您不需要创建TestConfiguration类并将其设置为Primary,因为这样可以在每个测试的基础上控制假冒,只有在需要时才可以。否则它使用主的
问题内容: 我一直在尝试测试GMail动作几天,但似乎无法正常工作。由于我尚未注册,因此我使用下面的Java小代码使用GMail的smtp服务器向自己发送电子邮件。邮件的正文是文档的直接副本。 不过,Apps Script版本有效。 问题答案: 甚至测试电子邮件也需要使用DKIM / SPF签名,以防止欺骗,而且我不确定SMTP是否有办法做到这一点。 如果您不想使用Apps脚本,则最好的选择是Go
我在SpringBoot 2上有一个应用程序。x个 pom。xml 这是应该自动连接的类。。。 pom。xml 更新 这个类来自类似的项目,它可以工作(但Intellij的想法将字段标记为错误) 在src/test/java/weblogic/war/Spring/boot/service/read/CompanyReadServiceTest.java 我复制了一个项目。 更新\u 2 我清除了
我正在使用一个带有spring boot 2.0.0.rc1的多项目分级器。我的子项目之一是SpringBoot应用程序,其中包含了我的集成测试。 集成测试用WebEnvironment.random_port标记为@springboottest。由于未解析的依赖关系(在另一个子项目中声明的服务,的同级),测试失败,使用了gradle命令行,但在Eclipse IDE中成功。 如果有人有主意?如何