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

Spring Boot集成测试-如何使用单个上下文运行多个测试类?

晏经武
2023-03-14

我有一个Spring Boot项目,其中定义了几个apiendpoint。我目前正在为每个API编写集成测试。我的测试类注释如下。

@RunWith(SpringRunner.class)
@SpringBootTest
...

现在,对于我的每个测试类,都会设置一个新的上下文来执行它们,这需要时间。我更喜欢将每个apiendpoint的测试用例保存在单独的类中,以便在逻辑上组织它们,但我不希望每次添加新的控制器类和相应的测试类时,我的测试执行时间都会猛增。我在这里做错了什么?

共有1个答案

葛修真
2023-03-14

只要您的测试使用相同的上下文(相同的模拟bean,相同的配置),spring默认情况下会在创建新上下文之前重用合适的上下文。

例外情况是,当您使用DirtiesContext注释测试时,这会告诉运行程序使所使用的上下文无效。

 类似资料:
  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 我正在编写集成测试,我想使用事务范围。我们使用EF和带有上下文的存储库。 编辑在评论中我被要求包括更多的代码,然而,我认为没有必要回答我的问题。

  • 我有以下测试: 这是好的,它可以运行,但是我想知道有没有一种方法可以将它作为单元测试而不是集成测试运行,并且仍然使用@mockbean@autowired。还是我错过了什么? 我试着只保留@ExtendWith(SpringExtension.class),但我得到一个关于找不到BookServiceImpl bean的异常。 我知道如何使用MockitoExtension和@mock、@inje

  • 我创建了多个spring-boot测试类(使用1.4.0)。 FirstActionTest。java: 第二个动作测试。java: 运行测试时通过: 运行测试 它似乎为每个测试类创建了一个Spring测试上下文,我想这不是必需的。 问题是: 可以在多个测试类之间共享单个spring测试上下文吗?如果可以,如何共享

  • 我试图使用Gradle的标志运行单个集成测试。我添加了另一个源代码集,并将测试放入其中。我有一个集成测试任务 这运行得很好,但是如果我尝试运行一个测试,它会告诉我它找不到匹配的测试。我不想每次编写一个新的集成测试时都必须运行每个集成测试。有办法做到这一点吗?