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

如何在不运行tomcat的情况下运行springboot测试?

孟宏才
2023-03-14

我正在开发一个spring启动应用程序并编写一些junit测试。

但我发现,当我运行任何测试时,tomcat也会启动,这使得这些测试非常缓慢,浪费了很多时间。

当我开发一个SpringMvc应用程序时,junit测试可以在不启动tomcat的情况下运行,这节省了很多时间。

所以,我想问它在那里无论如何要运行启动tomcat的springstart测试?

共有2个答案

融唯
2023-03-14

如果要放置以下批注,这将启动嵌入式容器。。。

@RunWith(SpringRunner.class)
@SpringBootTest

因为,如果您看到SpringBootTestContextBootstrapper.class类,那么它已经被@BootstrapWith(SpringBootTestContextBootstrapper.class)在指定@SpringBootTest

您可以删除这些,并可以执行以下操作:

import org.junit.Test;    
public class HellotomApplicationTests {    
    @Test
    public void contextLoads() {
    }

}

R-单击和RunAs JUnit

乔俊才
2023-03-14

默认情况下,使用@SpringBootTest运行测试会启动嵌入式服务器。默认情况下,它在模拟环境中运行。

默认情况下,@SpringBootTest不会启动服务器。您可以使用@SpringBootTest的webUNEP属性来进一步完善测试的运行方式:

模拟(默认):加载web应用程序上下文并提供模拟web环境。使用此批注时未启动嵌入式服务器。如果类路径上没有可用的web环境,则此模式会透明地退回到创建常规的非web应用程序上下文。它可以与@AutoConfigureMockMvc或@AutoConfigureWebTestClient结合使用,用于对web应用程序进行基于模拟的测试。

文档链接:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-测试spring启动应用程序的特性

我想您想要实现的可以通过切片测试概念来实现。通常,当您执行单元测试时,不需要一个完整的模拟环境,也不需要一个在spring容器中配置了所有bean的嵌入式服务器环境。

例如,您必须对控制器进行单元测试,然后安装@WebMvcTest注释,该注释将只配置与web相关的bean,而忽略其余的bean。

要测试SpringMVC控制器是否按预期工作,请使用@WebMvcTest注释@WebMvcTest自动配置Spring MVC基础结构,并将扫描的bean限制为@Controller、@ControllerAdvice、@JsonComponent、Converter、GenericConverter、Filter、WebMVCConfiguer和HandlerMethodArgumentResolver。使用此批注时不会扫描常规@Component bean。

文档链接:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-功能测试spring启动应用程序测试自动配置的mvc测试

类似地,对于数据库层,有@DataJpaTest

文档链接:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-功能测试spring启动应用程序测试自动配置jpa测试

长话短说:当您打算使用Spring框架进行单元测试时,大多数情况下都应该使用切片测试。

 类似资料:
  • 我在我的项目中使用带有MongoDb和Elasticsearch的Springboot。当我的Elasticsearch服务器运行时,我的Springboot应用程序运行良好,但当Elasticsearch服务器停止时,我的Springboot应用程序也无法启动。根据我的项目要求,即使Elasticsearch服务器无法启动,我们的Springboot应用程序仍应运行,因为我们的大多数API都是基

  • 我有一个Spring boot项目,它有使用kafka进行日志记录的依赖项。我无法摆脱所述依赖项,因为我的逻辑需要来自该依赖项的代码 我已尝试禁用自动配置 我尝试通过bean配置将missingTopicsFatal设置为false 但很明显,设置已经是假的,因为我的应用程序运行时没有失败,只是tomcat不想打开侦听端口 应用程序启动,但spring拒绝打开侦听端口,并继续使用错误进行循环 在本

  • 问题内容: 我想将实时生产数据库复制到本地开发数据库中。有没有一种方法可以不锁定生产数据库? 我目前正在使用: 但是它在运行时锁定每个表。 问题答案: 该选项有效吗? 根据手册页,如果要转储InnoDB表,则可以使用以下选项: 对于 innodb DB :

  • 我必须在WIndows工作站上执行此操作

  • 问题内容: 我想在Eclipse中编译我的Java程序,但不想运行它。我不知道该怎么做。 如何在不运行Eclipse的情况下将Java程序编译为文件? 问题答案: 您可以在项目菜单中自动取消选中构建,然后通过按Ctrl + B或单击打印机图标右侧出现的图标手动构建。

  • 我想参加一场比赛。Java一直是我编写游戏的工具,所以很自然我会想在这个游戏中使用它。问题是,它不能需要其他软件。我相信这包括Java。那么,有没有办法在某种exe文件中包含java?或者以其他方式包括它?资产不必包含在内,但总体大小必须小于1GB,因此我需要足够的空间来存放实际的游戏和资产。