JUnit测试:空指针异常

时间:2012-04-17 15:29:45

标签: spring hibernate spring-mvc extjs junit

我正在使用带有EXT JS的Spring和hibernate使用tomcat在网页上填充EXT JS表单...我使用访问数据库的方法填充表并返回我的HQL语句

现在我正在尝试执行一个简单的JUnit测试来计算返回的记录数,但是当我在JUint测试中调用填充EXT JS表单的方法时,它会返回此感知...我不知道为什么< / p>

JUnit Test class

package com.fexco.helloworld.web;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.fexco.helloworld.web.dao.CustomerDaoImpl;
import com.fexco.helloworld.web.model.Customer;

/**
* Unit test for simple App.
*   /
public class CustomerServiceTest {

@Autowired
private CustomerDaoImpl customerDaoImpl;

@Test
public void findAllCustomersTest() {        
    List<Customer> list = customerDaoImpl.findAllCustomers();
    int numberInDatabase = list.size();
    assertEquals(5, numberInDatabase);
}

}

访问数据库的方法

public List<Customer> findAllCustomers(){
    List<Customer> list = getHibernateTemplate().find("from Customer");
    return list;
}

我的方法调用访问数据库的方法

public List<Customer> returnAllCustomers(){
    List<Customer> list = customerDaoImpl.findAllCustomers();
    return list;
}

你可以在这里看到,表格使用与junit中相同的方法填充数据库中的项目(findAllCustomers())

enter image description here

有人有什么想法吗?

2 个答案:

答案 0 :(得分:5)

在类CustomerServiceTest

之前添加以下行
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = { "file:src/main/resources/app-context.xml" })
 public class CustomerServiceTest {....

其中src / main / resources / app-context.xml - 是应用程序上下文的路径。它很好,为测试创建单独的上下文。

修改

您还需要在类路径中包含spring-test.jar。 对maven的依赖:

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-version}</version>
        </dependency>

答案 1 :(得分:0)

您没有在单元测试中加载Spring上下文。

您可以在此处查看Spring文档:http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/testing.html

例如:Spring: JUnit-Test: applicationContext is not loaded