Chapter 8: 共享测试配置

使用Spring Boot Testing工具中提到:

在测试代码之间尽量做到配置共用。

能够有效利用Spring TestContext Framework的缓存机制,ApplicationContext只会创建一次,后面的测试会直接用已创建的那个,加快测试代码运行速度。

本章将列举几种共享测试配置的方法

@Configuration

我们可以将测试配置放在一个@Configuration里,然后在测试@SpringBootTest或ContextConfiguration中引用它。

PlainConfiguration

  1. @SpringBootApplication(scanBasePackages = "me.chanjar.shareconfig")
  2. public class PlainConfiguration {
  3. }

FooRepositoryIT

  1. @SpringBootTest(classes = PlainConfiguration.class)
  2. public class FooRepositoryIT extends ...

@Configuration on interface

也可以把@Configuration放到一个interface上。

PlainConfiguration

  1. @SpringBootApplication(scanBasePackages = "me.chanjar.shareconfig")
  2. public interface InterfaceConfiguration {
  3. }

FooRepositoryIT

  1. @SpringBootTest(classes = InterfaceConfiguration.class)
  2. public class FooRepositoryIT extends ...

Annotation

也可以利用Spring的Meta-annotations自定义机制,提供自己的Annotation用在测试配置上。

PlainConfiguration

  1. @Target(ElementType.TYPE)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @SpringBootApplication(scanBasePackages = "me.chanjar.shareconfig")
  4. public @interface AnnotationConfiguration {
  5. }

FooRepositoryIT

  1. @SpringBootTest(classes = FooRepositoryIT.class)
  2. @AnnotationConfiguration
  3. public class FooRepositoryIT extends ...

参考文档