当前位置: 首页 > 知识库问答 >
问题:

如何在集成测试中同时使用@DataMongoTest和@SpringBootTest

景河
2023-03-14

我正在尝试为我的一个rest应用程序编写集成测试用例,该应用程序在内部使用mongodb来持久化数据

@DataMongoTest 
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class MainControllerTest {
@LocalServerPort
    private int port = 8080;
/* some test cases*/ 
}

但我正在犯错

java.lang.IllegalStateException: Configuration error: found multiple declarations of @BootstrapWith for test class [com.sample.core.controller.MainControllerTest]: [@org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTestContextBootstrapper), @org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.context.SpringBootTestContextBootstrapper)]

看起来这两个是互斥的,那么如何做集成测试。

共有1个答案

张啸
2023-03-14

将@AutoConfigureDataMongo与@SpringBootTest一起使用,这将解决这个歧义问题@SpringBootTest和@DataMongoTest不能一起使用。

 类似资料:
  • 我有以下实现: 此安全性适用于正常运行的应用程序。但在测试中-失败。我有一个集成测试,如下所示: 运行后,我得到以下错误: null (为了简洁起见,删除了方法体和一些字符串) //编辑附加的丢失类,这些类被注入到:

  • 下面是一个最小的例子: project/build.scala src/test/scala/helpers.scala 然后,在sbt中,“test”起作用: 但是“it:test”不能编译:

  • 我有一个函数,在这个函数中,我想替换一些组件的行为(余弦,正弦,...),我正在尝试为这些部分创建一个mock,并将它们传递给函数。 问题是,我收到以下消息: *org.mockito.exceptions.misusing.MissingMethodInvocationException:当()需要一个必须是“模拟上的方法调用”的参数。例如:当(mock.getArticles()). then

  • 问题内容: 我有一个Java方法,可在Mongo集合的两个字段上创建索引。我应该获取集合的索引信息,然后检查索引的名称和字段是否正确。为此编写集成测试的最干净方法是什么?使用自定义的Hamcrest匹配器查看索引是否在集合中是否有意义? 问题答案: 在春天 使用,您可以获取的列表,代表MongoDB集合的索引。由于这是一个常规列表,因此您可以结合使用和进行断言: 如果您觉得这太难以理解或不方便使用

  • 我使用@Profile Spring注释在嵌入式、独立和容器管理的数据源之间进行选择。为了选择“嵌入”,我的集成测试被注释为激活适当的配置文件: 问题是,我想将'@ActiveProfiles'移动到TestConfigWrapper,但这样做没有得到执行,应用程序上下文也不会加载任何数据源。 有没有一种方法可以使用java配置来实现这一点?

  • 与@mockbean和@spybean一样,有没有类似于@fakebean/@dummybean的东西? 其思想是,该实例是100%真实的(具有预期的生产内部状态),并且它覆盖(或者添加bean,以防在配置中没有声明)上下文中的bean。理想情况下,您不需要创建TestConfiguration类并将其设置为Primary,因为这样可以在每个测试的基础上控制假冒,只有在需要时才可以。否则它使用主的