Java Junit测试用例出现空点异常,无法从服务层检索数据

Java Junit测试用例出现空点异常,无法从服务层检索数据,java,spring,hibernate,junit,Java,Spring,Hibernate,Junit,我是JUnit新手,我已经为服务层(业务层)和数据库层(Hibernate层)编写了测试用例。当我为BackingBean写作时,我遇到了一个无法解决的错误。看看附件中的片段,帮助我摆脱这种沮丧。我觉得我没有从服务(业务)层获取数据,但在我的Bean中,我可以打印列表,在Junit测试用例中,我得到的是NULL RepricingBeanTest.java中的方法 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loca

我是JUnit新手,我已经为服务层(业务层)和数据库层(Hibernate层)编写了测试用例。当我为BackingBean写作时,我遇到了一个无法解决的错误。看看附件中的片段,帮助我摆脱这种沮丧。我觉得我没有从服务(业务)层获取数据,但在我的Bean中,我可以打印列表,在Junit测试用例中,我得到的是NULL

RepricingBeanTest.java中的方法

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={
"file:src/main/resources/config/spring/beans/HibernateSessionFactory.xml",
    "file:src/main/resources/config/spring/beans/DataSourceTest.xml",
"file:src/main/resources/com/dynaprice/customer/spring/CustomerBean.xml"})
public class RepricingBeanTest {

RepricingBean beanrep = new RepricingBean();

@BeforeClass
public static void initialise() {

}
@Test
public void testGetRepricingRules() {
    int iSize = beanrep.getRepricingRules().size();
    assertNotNull(iSize);
}
public List<Repricing> getRepricingRules(){
    return repricingBoimpl.getRepricingRules();
}
@Override
public List<Repricing> getRepricingRules() {
    return repricingDaoimpl.getRepricingRules();
}
public List<Repricing> getRepricingRules() {
        getHibernateTemplate().find("from Rule");
        @SuppressWarnings("unchecked")
        List<Repricing>repricingdata=getHibernateTemplate().find("from Repricing");
        System.out.println(repricingdata);
        return repricingdata;
    }
Repricingbean.java中的方法

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={
"file:src/main/resources/config/spring/beans/HibernateSessionFactory.xml",
    "file:src/main/resources/config/spring/beans/DataSourceTest.xml",
"file:src/main/resources/com/dynaprice/customer/spring/CustomerBean.xml"})
public class RepricingBeanTest {

RepricingBean beanrep = new RepricingBean();

@BeforeClass
public static void initialise() {

}
@Test
public void testGetRepricingRules() {
    int iSize = beanrep.getRepricingRules().size();
    assertNotNull(iSize);
}
public List<Repricing> getRepricingRules(){
    return repricingBoimpl.getRepricingRules();
}
@Override
public List<Repricing> getRepricingRules() {
    return repricingDaoimpl.getRepricingRules();
}
public List<Repricing> getRepricingRules() {
        getHibernateTemplate().find("from Rule");
        @SuppressWarnings("unchecked")
        List<Repricing>repricingdata=getHibernateTemplate().find("from Repricing");
        System.out.println(repricingdata);
        return repricingdata;
    }
你似乎完全跳过了春天,这意味着

return repricingBoimpl.getRepricingRules();
…可能只是没有
replicingboimpl
集(因为Spring没有机会与这个bean交互,所以该实例实际上不是Spring管理的bean,只是一些随机对象),这可以解释NPE。试试看

@Autowired
private RepricingBean beanrep;

…在你的测试课上。如果这不起作用,请发布
replicingbean
获取其
replicingboimpl
集的部分。

当我使用@autowired时,没有定义类型为[com.dynaprice.replicingbean]的唯一bean时,我得到的错误:未满足类型[class com.dynaprice.replicingbean]的依赖关系:预期至少有1个匹配的bean我已经发布了所有层,说明从bean到数据库层的流将如何。当我使用sop语句时,我从服务层获得它,我可以在控制台中看到列表。然后RepricingBean不是SpringBean,这意味着,在您的测试中,您必须以某种方式获得repricingBoimpl并在initialize()方法中手动设置它。因为我不知道你的报复通常来自哪里,所以很难说在你的测试中从哪里得到它。