gpt4 book ai didi

java - 将 Spring 3.0.0 基于 java 的 IOC 添加到 JUnit 4.7 测试

转载 作者:IT老高 更新时间:2023-10-28 13:47:22 25 4
gpt4 key购买 nike

有一个文档 http://static.springsource.org/spring/docs/2.5.6/reference/testing.html如何使用 xml 配置向 junit 测试添加 IoC 支持,但我找不到基于 java 的配置的示例...

例如,我有基于 java 的 bean:

public class AppConfig
{
@Bean
public Test getTest() { return new Test(); }
}

并测试:

@RunWith(SpringJUnit4ClassRunner.class)
public class IocTest
{
@Autowired
private Test test;

@Test
public void testIoc()
{
Assert.assertNotNull(test);
}
}

在不使用 xml-configs 的情况下,我应该添加什么以在我的 junit 测试中启用基于 java 的 bean?

我通常使用:

new AnnotationConfigApplicationContext(AppConfig.class);

但它不适用于测试...

最佳答案

更新: Spring 3.1 将立即支持它,请参阅 Spring 3.1 M2: Testing with @Configuration Classes and Profiles .


Spring 似乎还不支持此功能。但是,它很容易实现:

public class AnnotationConfigContextLoader implements ContextLoader {

public ApplicationContext loadContext(String... locations) throws Exception {
Class<?>[] configClasses = new Class<?>[locations.length];
for (int i = 0; i < locations.length; i++) {
configClasses[i] = Class.forName(locations[i]);
}
return new AnnotationConfigApplicationContext(configClasses);
}

public String[] processLocations(Class<?> c, String... locations) {
return locations;
}
}

-

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
value = "com.sample.AppConfig")
public class IocTest {
@Autowired
TestSerivce service;

@Test
public void testIoc()
{
Assert.assertNotNull(service.getPredicate());
}
}

-

@Configuration
public class ApplicationConfig
{
...

@Bean
public NotExistsPredicate getNotExistsPredicate()
{
return new NotExistsPredicate();
}

@Bean
public TestService getTestService() {
return new TestService();
}
}

关于java - 将 Spring 3.0.0 基于 java 的 IOC 添加到 JUnit 4.7 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2228820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com