![](/img/trans.png)
[英]java.lang.NullPointerException: Cannot invoke method get() on null object
[英]java.lang.NullPointerException: Cannot invoke method queryForList() on null object
我在Service類中有一個簡單的getEmployeeList方法,該方法通過使用Spring JDBC查詢雇員列表來查詢數據庫。
class EmployeeListService
{
private static final String QUERY_FOR_GETTING_ALL_EMPLOYEE_LIST="select ID, name from emp order by name";
def dataSource
private JdbcTemplate jdbcTemplate
@PostConstruct
def init() {
jdbcTemplate = new JdbcTemplate(dataSource)
}
def getEmployeeList() {
ArrayList<String> employeeList = jdbcTemplate.queryForList(QUERY_FOR_GETTING_ALL_EMPLOYEE_LIST);
return employeeList;
}
}
我正在編寫用於對getEmployeeList方法進行Null檢查的Grails單元測試。
@WithGMock
class EmployeeListServiceTest extends GrailsUnitTestCase {
EmployeeListService empService;
@Before
public void setUp() {
empService = new EmployeeListService();
}
@Test
public void toCheckgetEmployeeListDoesNotReturnNull()
{
ArrayList<String> employeeList = empService.getEmployeeList()
assertNotNull(employeeList);
}
}
當我按正常流程執行程序時,我會得到員工列表。 但是當我執行單元測試時,出現以下異常
Failure: toCheckgetEmployeeListDoesNotReturnNull(com.employee.home.service.EmployeeListServiceTest)
java.lang.NullPointerException: Cannot invoke method queryForList() on null object
at com.employee.home.service.EmployeeListService.getEmployeeList(EmployeeListService.groovy:170)
at com.employee.home.service.EmployeeListServiceTest.toCheckgetEmployeeListDoesNotReturnNull(EmployeeListServiceTest.groovy:24)
在單元測試期間,您使用setUp方法手動創建服務的實例時,不會調用postConstruct方法。
因此,不會調用以下內容。
@PostConstruct
def init() {
jdbcTemplate = new JdbcTemplate(dataSource)
}
這導致您的JdbcTemplate在單元測試期間為null。
如果需要測試數據庫查詢等,我建議您使用集成測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.