首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot尝试使用@JsonTest注释在测试中创建mongo存储库

Spring Boot尝试使用@JsonTest注释在测试中创建mongo存储库
EN

Stack Overflow用户
提问于 2018-03-21 12:54:13
回答 2查看 1.5K关注 0票数 0

我有一个在mongodb中使用SpringBoot2的应用程序,我试图通过进行以下测试来测试一些DTOS的json序列化:

代码语言:javascript
复制
@JsonTest
@RunWith(SpringRunner.class)
public class SomeDTOTest {
    @Autowired
    JacksonTester < SomeDTO > json;

    @Test
    public void someTest() {}
}

然而,在spring下面,它试图创建存储库bean,并向我提供信息:

代码语言:javascript
复制
***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean named 'mongoTemplate' that could not be found.


Action:

Consider defining a bean named 'mongoTemplate' in your configuration.

我有更多的集成测试,它使用存储库,并使用@SpringBootTest进行注释,它们运行良好.

有办法限制spring只创建JacksonTester bean吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-21 13:08:40

你只需要创建一个没有弹簧跑步者的测试。

这是一个示例示例测试

在加载spring上下文时,如果某个地方有mongotemplate的自动注释,spring将尝试提供它。你可以考虑:

  1. 在测试中提供mongo模板 尝试使用@DataMongoTest,它将提供一个嵌入式数据库。
  2. 设置不需要的自动头发 使用@Autowired(required= false)
  3. 模拟蒙古模板 使用@MockBean注释来模拟mongoTemplate
票数 1
EN

Stack Overflow用户

发布于 2018-05-29 14:34:35

我发现在Spring应用程序中同时进行集成测试和单元测试是很有挑战性的。我查看了Spring网站,并尝试了许多解决方案。为我工作的是排除AutoConfiguration类:

代码语言:javascript
复制
 @RunWith(SpringRunner.class)
 @JsonTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
 public class JsonTests {

      @Autowired
      private JacksonTester json;

      @MockBean
      private MyRepository repository;

      @MockBean
      private MongoTemplate mongoTemplate;

      @Test
      public void someTest() {}
 }      

您可以找到完整的Spring应用程序,其中包括Integration测试这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49406878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档