Infra JUnit Jupiter 测试注解

当与 InfraExtension 和 JUnit Jupiter(即 JUnit 5 中的编程模型)结合使用时,支持以下注解:

@JUnitConfig

@JUnitConfig 是一个组合注解,它结合了 JUnit Jupiter 中的 @ExtendWith(InfraExtension.class) 和 Infra TestContext 框架中的 @ContextConfiguration。 它可以在类级别用作 @ContextConfiguration 的直接替代品。 关于配置选项,@ContextConfiguration@JUnitConfig 之间的唯一区别是,组件类可以在 @JUnitConfig 中使用 value 属性声明。

以下示例显示了如何使用 @JUnitConfig 注解指定配置类:

  • Java

@JUnitConfig(TestConfig.class) (1)
class ConfigurationClassJUnitJupiterInfraTests {
  // 类体...
}
1 指定配置类。

以下示例显示了如何使用 @JUnitConfig 注解指定配置文件的位置:

  • Java

@JUnitConfig(locations = "/test-config.xml") (1)
class XmlJUnitJupiterInfraTests {
  // 类体...
}
1 指定配置文件的位置。

有关更多详细信息,请参阅 上下文管理 以及 @JUnitConfig@ContextConfiguration 的 javadoc。

@JUnitWebConfig

@JUnitWebConfig 是一个组合注解,它结合了 JUnit Jupiter 中的 @ExtendWith(InfraExtension.class) 和 Infra TestContext 框架中的 @ContextConfiguration 以及 @WebAppConfiguration。 您可以在类级别将其用作 @ContextConfiguration@WebAppConfiguration 的直接替代品。 关于配置选项,@ContextConfiguration@JUnitWebConfig 之间的唯一区别是,您可以使用 @JUnitWebConfig 中的 value 属性声明组件类。 此外,您只能通过使用 @JUnitWebConfig 中的 resourcePath 属性来覆盖 @WebAppConfiguration 中的 value 属性。

以下示例显示了如何使用 @JUnitWebConfig 注解指定配置类:

  • Java

@JUnitWebConfig(TestConfig.class) (1)
class ConfigurationClassJUnitJupiterInfraWebTests {
  // 类体...
}
1 指定配置类。

以下示例显示了如何使用 @JUnitWebConfig 注解指定配置文件的位置:

  • Java

@JUnitWebConfig(locations = "/test-config.xml") (1)
class XmlJUnitJupiterInfraWebTests {
  // 类体...
}
1 指定配置文件的位置。

有关更多详细信息,请参阅 上下文管理 以及 @JUnitWebConfig、https://docs.today-tech.cn/today-infrastructure/docs/5.0-Draft.6-SNAPSHOT/javadoc-api/infra/test/context/ContextConfiguration.html[@ContextConfiguration] 和 @WebAppConfiguration 的 javadoc。

@TestConstructor

@TestConstructor 是一个类型级别的注解,用于配置如何从测试的 ApplicationContext 中的组件自动装配测试类构造函数的参数。

如果测试类上不存在或元存在 @TestConstructor,则将使用默认的 测试构造函数自动装配模式。 有关如何更改默认模式的详细信息,请参阅下面的提示。 但是请注意,构造函数上 @Autowired@jakarta.inject.Inject@javax.inject.Inject 的本地声明优先于 @TestConstructor 和默认模式。

更改默认的测试构造函数自动装配模式

可以通过将 infra.test.constructor.autowire.mode JVM 系统属性设置为 all 来更改默认的 测试构造函数自动装配模式。 或者,可以通过 InfraProperties 机制设置默认模式。

从 TODAY Framework 5.3 开始,默认模式也可以配置为 JUnit 平台配置参数

如果未设置 infra.test.constructor.autowire.mode 属性,则测试类构造函数将不会自动装配。

从 TODAY Framework 5.2 开始,@TestConstructor 仅支持与用于 JUnit Jupiter 的 InfraExtension 结合使用。 请注意,InfraExtension 通常会自动为您注册——例如,当使用诸如 @JUnitConfig@JUnitWebConfig 之类的注解或来自 Infra App Test 的各种测试相关注解时。

@NestedTestConfiguration

@NestedTestConfiguration 是一个类型级别的注解,用于配置如何在内部测试类的封闭类层次结构中处理 Infra 测试配置注解。

如果测试类、其超类型层次结构或其封闭类层次结构中不存在或元存在 @NestedTestConfiguration,则将使用默认的 封闭配置继承模式。 有关如何更改默认模式的详细信息,请参阅下面的提示。

更改默认的封闭配置继承模式

默认的 封闭配置继承模式INHERIT,但可以通过将 infra.test.enclosing.configuration JVM 系统属性设置为 OVERRIDE 来更改。 或者,可以通过 InfraProperties 机制设置默认模式。

Infra TestContext 框架 遵循以下注解的 @NestedTestConfiguration 语义。