Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot尝试在测试中使用@JsonTest注释创建mongo存储库_Java_Json_Spring_Spring Boot_Junit - Fatal编程技术网

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

Java Spring Boot尝试在测试中使用@JsonTest注释创建mongo存储库,java,json,spring,spring-boot,junit,Java,Json,Spring,Spring Boot,Junit,我有一个使用SpringBoot2和mongodb的应用程序,我正试图通过以下测试来测试一些DTO的json序列化: @JsonTest @RunWith(SpringRunner.class) public class SomeDTOTest { @Autowired JacksonTester < SomeDTO > json; @Test public void someTest() {} } 我有更多的集成测试正在使用存储库,并用@Spri

我有一个使用SpringBoot2和mongodb的应用程序,我正试图通过以下测试来测试一些DTO的json序列化:

@JsonTest
@RunWith(SpringRunner.class)
public class SomeDTOTest {
    @Autowired
    JacksonTester < SomeDTO > json;

    @Test
    public void someTest() {}
}
我有更多的集成测试正在使用存储库,并用@SpringBootTests注释,它们运行良好


有没有办法限制spring只创建JacksonTester bean

您可以创建一个没有spring runner的测试

这是一个例子

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

  • 在测试中提供了mongo模板

    尝试使用@DataMongoTest,它将提供一个嵌入式数据库

  • 不需要设置自动连线

    使用@Autowired(必需=false)

  • 模拟mongotemplate

    使用@MockBean注释来模拟mongoTemplate


  • 您可以创建一个没有SpringRunner的测试

    这是一个例子

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

  • 在测试中提供了mongo模板

    尝试使用@DataMongoTest,它将提供一个嵌入式数据库

  • 不需要设置自动连线

    使用@Autowired(必需=false)

  • 模拟mongotemplate

    使用@MockBean注释来模拟mongoTemplate


  • 我发现在Spring启动应用程序中既要进行集成测试,又要进行单元测试,这非常具有挑战性。 我查看了Spring网站并尝试了许多解决方案。对我有效的方法是排除自动配置类:

     @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引导应用程序,其中包括集成和单元测试

    我发现在Spring Boot应用程序中既要进行集成测试,又要进行单元测试,这是一项相当具有挑战性的工作。 我查看了Spring网站并尝试了许多解决方案。对我有效的方法是排除自动配置类:

     @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引导应用程序,其中包括集成和单元测试