RunWith SpringJUnit4ClassRunner无法使用InitializingBean加载ApplicationContext

时间:2016-12-22 11:45:54

标签: spring-mvc spring-test

我正在使用InitializingBean来初始化模态类中的静态属性。这个对象我在服务中自动接线

当我编写服务的测试用例时,我抛出错误:无法加载ApplicationContext

配置类

public class AppConfig {
    private String prop1;

    protected void setProp1(String prop) {
        this.prop1 = prop;
    }

    public String getProp1() {
        return prop1;
    }
}

PropertyIntilizer类

public class PropertyIntializer implements InitializingBean {

    @Autowired
    private AppConfig appConfig;

    @Override
    public void afterPropertiesSet() throws Exception {

        appConfig.setProp1("PROP");
    }
}

服务类

@Service
public class Service {

    @Autowired
    private AppConfig appConfig;

    public void doSomething(){
        System.out.println(appConfig.getProp1());
    }
}

识别TestClass

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TestConfig.class })
public class ServiceTest {

    @Autowired
    private Service service;

    @Test
    public void testService(){
        service.doSomething();
    }
}

这会出错:无法加载ApplicationContext

但是当我删除Autowired AppConfig时,它可以正常工作

编辑: TestConfig类

@Configuration
@ComponentScan(basePackages = { "base.package" })
public class TestConfig {

}

我的主要类在base.package.main和base.package.test中的测试类

1 个答案:

答案 0 :(得分:0)

类似的问题通过在buid路径中添加JRE(在我的案例websphere中附带应用程序服务器)来解决我的问题