2017-02-16 105 views
1

如何将spring bean注入静态classRule?如何将spring bean注入静态classRule?

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

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

} 
+0

可能你必须在'SimpleClassRule'中扩展'org.springframework.test.context.junit4.rules.SpringClassRule'? – vegaasen

回答

0

如果扩展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。

还我发现了以下解决方案中春JIRAhttps://jira.spring.io/browse/SPR-10252

目前,它可以通过与查找@rule和@ClassRule领域额外的逻辑 延长 DependencyInjectionTestExecutionListener(DITEL)来实现并且自动测试实例是自动装配的,因此它们的测试方式与 相同。