假设您在测试 spring 上下文时遇到以下情况
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigClass.class})
public class IntegrationTest {
@ClassRule
static PluginThatSetsUpSomethingEmbedded pluginRule = new PluginThatSetsUpSomethingEmbedded();
}
现在我的一个 Spring bean 需要一些只能从规则中得出的东西,比如:
pluginRule.getEmbeddedToolConfig()
我如何为我的 bean 提供该配置,请注意规则是 ClassRule 并且也是静态的...
最佳答案
我建议你使用ApplicationContextInitializer你的测试类将是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigClass.class}, initializers = IntegrationTest.Initializer.class)
public class IntegrationTest {
@ClassRule
static PluginThatSetsUpSomethingEmbedded pluginRule = new PluginThatSetsUpSomethingEmbedded();
public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
}
}
在初始化方法中,您可以实现您的逻辑。
关于spring - 如何将来自规则的值注入(inject)测试 Spring 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481294/