在所有SpringBootTests中使用一个spring引导上下文

时间:2017-08-09 12:48:57

标签: java spring spring-boot junit spring-test

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

测试类以这种方式声明:

$('input').keyup(updateCount);

我看到了这个问题Reuse spring application context across junit test classes,但在这种情况下,我不使用任何xml,我想完全启动上下文,而不仅仅是几个bean,所以@SpringBootTest @RunWith(SpringRunner.class) public class SomeIntegrationTest { } @SpringBootTest,如果我做对了。

1 个答案:

答案 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中以组的形式执行所有测试。