【问题标题】:How to inject spring bean into static classRule?如何将spring bean注入静态classRule?
【发布时间】:2017-07-05 08:41:51
【问题描述】:

如何将spring bean注入静态classRule?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigClass.class})
public class SimpleTest   {

 @ClassRule 
 public static SimpleClassRule simpleClassRule = new SimpleClassRule ();

}

【问题讨论】:

  • 您可能需要在SimpleClassRule 中扩展org.springframework.test.context.junit4.rules.SpringClassRule

标签: java spring unit-testing spring-test


【解决方案1】:

如果您扩展 SpringJUnit4ClassRunner.class 并覆盖 withBeforeClasses, withBefores 方法,这是可能的:

public class CustomRunner extends SpringJUnit4ClassRunner {
    @Override
    protected Statement withBeforeClasses(Statement statement) {
        List<TestRule> testRules = classRules();
        // spring method to inject into existing object like injector.injectMembers(...);
        return super.withBeforeClasses(statement);
    }
}

重要:此解决方案不适用于 RuleChains。

我还在 Spring JIRA 中找到了以下解决方案: https://jira.spring.io/browse/SPR-10252

目前可以通过扩展来实现 具有附加逻辑的 DependencyInjectionTestExecutionListener (DITEL) 查找 @Rule 和 @ClassRule 字段并自动连接它们 测试实例自动装配的方式。

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 2017-02-27
    • 2011-11-05
    • 2019-02-03
    • 1970-01-01
    • 2012-02-19
    • 2011-05-29
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多