我在使用spring junit runner进行一些测试时遇到了一些问题。
我正在使用Java配置进行spring,所以我似乎无法找到适合我的示例。
我想要做的就是编写一个junit测试,我可以使用我的一个dao类,并让它使用hibernate和所有东西,但为此我需要在真正的spring上下文中加载它。
我尝试过像这样编写测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=HibernateConfig.class, loader=AnnotationConfigContextLoader.class)
public class TestNodeDao {
@Configuration
@ComponentScan(basePackages = "com.orclands" )
static class Config {
@Bean
public NodeDao nd() {
NodeDao nd = new NodeDao();
return nd;
}
}
@Autowired
private NodeDao nd;
但它无法在nodeDao
中自动装配。它说NoSuchBeanDefinitionException
。
如果我尝试自动装配NodeDao
,那么它就会运行,但是作为一个弹簧测试运行它的整个唯一的关键是我可以测试真正的弹簧配置NodeDao
我也尝试过没有组件扫描,组件扫描但没有bean声明和其他一些方法,但我无法让它工作。
答案 0 :(得分:1)
两件事......
所以尝试这样的事情:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={HibernateConfig.class, TestNodeDao.Config.class})
public class TestNodeDao {
@Configuration
static class Config {
@Bean
public NodeDao nd() {
return new NodeDao();
}
}
@Autowired
private NodeDao nd;
// ...
}
或者甚至更干净:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestNodeDao {
@Configuration
@Import(HibernateConfig.class)
static class Config {
@Bean
public NodeDao nd() {
return new NodeDao();
}
}
@Autowired
private NodeDao nd;
// ...
}
此致
萨姆