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

在SpringBoot中编写不需要启动应用程序的单元测试

乐正意智
2023-03-14

我在SpringBoot中开发微服务。为服务和DAO层编写单元测试。当我使用@SpringBootTest时,它会在构建时启动应用程序。但是当我运行单元测试时,它不应该启动应用程序。我使用了@runwith(Springrunner.class),但无法在junit类中使用@autowired类实例。如何配置不应该启动应用程序的junit测试类,以及如何在junit类中@Autowired类实例。

共有1个答案

屈星腾
2023-03-14

使用Spring Boot,您可以为您的测试启动应用程序的切片版本。这将创建一个Spring上下文,其中只包含与您的bean相关的子集,例如仅与您的web层(控制器、过滤器、转换器等):@webmvctest

有一个类似的注释可以帮助您测试DAOs,因为它只填充JPA和数据库相关的bean(例如EntitiyManagerDataSource等):@datajpatest

如果您想要autowire一个bean,它不是由上面的注释创建的Spring测试上下文的一部分,您可以使用@testconfiguration手动向测试上下文添加任何您喜欢的bean

@WebMvcTest(PublicController.class)
class PublicControllerTest {

  @Autowired
  private MockMvc mockMvc;

  @TestConfiguration
  static class TestConfig {

    @Bean
    public EntityManager entityManager() {
      return mock(EntityManager.class);
    }

    @Bean
    public MeterRegistry meterRegistry() {
      return new SimpleMeterRegistry();
    }

  }
}
 类似资料:
  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 需要帮助使用Mockito和JUnit4为下面的代码编写单元测试,

  • 在单元测试中启动和正常关闭Spring应用程序的推荐方法是什么?我知道JUnit5的SpringExtension,但它在测试方法执行之前/之后启动和停止Spring上下文。 我想用测试方法启动和停止spring上下文,因为我想验证是否调用了某些方法(尤其是在关机期间)。 有没有推荐的方法来实现这一点?

  • 我正试图将运行在tomcat上的现有应用程序更改为SpringBoot。它一直运行到真正的SpringBoot启动。我有一个类似的应用程序运行在SpringBoot上。这就是我知道它一直运行到Springboot的原因。 我的主要方法: 我尝试使用@componentscan运行main方法,该方法具有如下所示的basePackages: 这无济于事。我尝试在main类的顶部添加@SpringBo

  • 我在stackoverflow上发现了类似的问题,并试图用这种方式(LINK)解决这个问题,但在我的项目中没有起作用。谁能给我一些建议吗? pom.xml 应用属性

  • 问题内容: 我目前正在开发一个Python应用程序,希望在该应用程序上查看实时统计信息。我想使用它以使其易于使用和理解。 问题是我的Flask服务器应该在我的Python应用程序的最开始处启动,而在最末尾停止。它看起来应该像这样: 因为我需要我的应用程序上下文(用于统计),所以不能使用multiprocessing.Process。然后,我尝试使用threading.Thread,但是Werkze