Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Springbean注入静态类规则?_Java_Spring_Unit Testing_Spring Test - Fatal编程技术网

Java 如何将Springbean注入静态类规则?

Java 如何将Springbean注入静态类规则?,java,spring,unit-testing,spring-test,Java,Spring,Unit Testing,Spring Test,如何将Springbean注入静态类规则 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ConfigClass.class}) public class SimpleTest { @ClassRule public static SimpleClassRule simpleClassRule = new SimpleClassRule (); } 如果扩展SpringJUnit4C

如何将Springbean注入静态类规则

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

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

}

如果扩展SpringJUnit4ClassRunner.class并使用BeforeClasses和Before方法重写,则可以:

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);
    }
}
公共类CustomRunner扩展了SpringJUnit4ClassRunner{
@凌驾
BeforeClasses的受保护语句(语句语句){
List testRules=classRules();
//spring方法注入现有对象,如injector.injectMembers(…);
返回super.withbefore类(语句);
}
}
重要提示:此解决方案不适用于规则链

另外,我在Spring JIRA中发现了以下解决方案:

目前,可以通过扩展 带有附加逻辑的DependencyInjectionTestExecutionListener(DITEL) 这将查找@Rule和@ClassRule字段,并将它们自动关联起来 作为测试实例的方式是自动连接的


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