通过所有SpringBootTest使用一个Spring Boot上下文

我希望能够通过使用junit的测试通过不同的类来缓存应用程序上下文。

测试类以这种方式声明:

@SpringBootTest

@RunWith(SpringRunner.class)

public class SomeIntegrationTest {

}

我看到了这个问题,可以跨junit测试类重用spring应用程序上下文,但是在这种情况下,我不使用任何xml,而是要完全启动上下文,而不仅仅是从它中获取几个bean,因此如果我做对了,它@SpringBootTest比xml更合适@ContextConfiguration

回答:

Ruslan,所以您的问题是如何为JUnit Suite重用Spring Boot Context,对吗?

然后,它几乎是开箱即用的,您只需要使用注释为每个单元测试添加@SpringBootTest注释。

还要确保您的主@SpringBootApplication类正在加载所有必需的@Configuration类,如果@SpringBootApplications在所有配置类上方的根包上,并且继承了该类,则将自动加载所有必需的类@ComponentScan

Spring Boot提供了一个@SpringBootTest注释,@ContextConfiguration当您需要Spring

Boot功能时,该注释可以用作标准spring-test

注释的替代方法。注释通过创建通过SpringApplication在测试中使用的ApplicationContext来起作用。Spring

TestContext框架将应用程序上下文存储在静态缓存中。这意味着上下文实际上是存储在静态变量中的。换句话说,如果测试在单独的进程中执行,则将在每次测试执行之间清除静态缓存,这将有效地禁用缓存机制。为了从缓存机制中受益,所有测试必须在同一进程或测试套件中运行。这可以通过在IDE中以组的形式执行所有测试来实现

默认情况下,加载后,已配置的ApplicationContext将重新用于每个测试。因此,每个测试套件仅产生一次安装成本,并且随后的测试执行要快得多。在这种情况下,术语“测试套件”表示所有测试都在同一JVM中运行

回答:

以上是 通过所有SpringBootTest使用一个Spring Boot上下文 的全部内容, 来源链接: utcz.com/qa/436236.html

回到顶部