通过所有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
类,如果@SpringBootApplication
s在所有配置类上方的根包上,并且继承了该类,则将自动加载所有必需的类@ComponentScan
。
Spring Boot提供了一个
@SpringBootTest
注释,@ContextConfiguration
当您需要SpringBoot功能时,该注释可以用作标准spring-test
注释的替代方法。注释通过创建通过SpringApplication在测试中使用的ApplicationContext来起作用。Spring
TestContext框架将应用程序上下文存储在静态缓存中。这意味着上下文实际上是存储在静态变量中的。换句话说,如果测试在单独的进程中执行,则将在每次测试执行之间清除静态缓存,这将有效地禁用缓存机制。为了从缓存机制中受益,所有测试必须在同一进程或测试套件中运行。这可以通过在IDE中以组的形式执行所有测试来实现
默认情况下,加载后,已配置的ApplicationContext将重新用于每个测试。因此,每个测试套件仅产生一次安装成本,并且随后的测试执行要快得多。在这种情况下,术语“测试套件”表示所有测试都在同一JVM中运行
回答:
以上是 通过所有SpringBootTest使用一个Spring Boot上下文 的全部内容, 来源链接: utcz.com/qa/436236.html