我希望能够使用junit通过不同的类缓存应用程序上下文。
测试类以这种方式声明:
$('input').keyup(updateCount);
我看到了这个问题Reuse spring application context across junit test classes,但在这种情况下,我不使用任何xml,我想完全启动上下文,而不仅仅是几个bean,所以@SpringBootTest
@RunWith(SpringRunner.class)
public class SomeIntegrationTest {
}
比@SpringBootTest
,如果我做对了。
答案 0 :(得分:3)
Ruslan,所以你的问题是关于如何为JUnit Suite重用Spring Boot Context,对吗?
然后,它几乎是开箱即用的,您只需要使用@SpringBootTest
注释来注释每个单元测试。
还要确保您的主@SpringBootApplication
类正在加载所有必需的@Configuration
类,如果@SpringBootApplication
位于所有配置类之上的根包上,则此过程将自动完成。使用继承的@ComponentScan
将加载所有这些。
来自Spring Boot Testing文档:
Spring Boot提供了一个
@SpringBootTest
注释,当您需要Spring Boot功能时,它可以用作标准spring-test@ContextConfiguration
注释的替代方法。注释的工作原理是通过SpringApplication创建测试中使用的ApplicationContext。 Spring TestContext框架将应用程序上下文存储在静态缓存中。这意味着上下文实际上存储在静态变量中。换句话说,如果测试在单独的进程中执行,则静态高速缓存将在每次测试执行之间被清除,这将有效地禁用高速缓存机制。 要从缓存机制中受益,所有测试必须在同一进程或测试套件中运行。这可以通过在IDE中作为一个组执行所有测试来实现
来自Spring Testing文档:
默认情况下,一旦加载,配置的ApplicationContext将重复用于每个测试。因此,每个测试套件仅产生一次设置成本,并且后续测试执行要快得多。在此上下文中,术语测试套件意味着所有测试都在同一JVM中运行
检查此网址:
使用@SpringBootTest
在主@SpringBootApplication
课程中加载所有bean和必要的配置类
重要说明:运行JUnit Suite,而不是单个JUnit测试。在IDE中以组的形式执行所有测试。