0
私は、SpringクラスのJDBCを使用して従業員のリストを取得してデータベースにクエリを実行する、単純なgetEmployeeListメソッドをサービスクラスに用意しています。java.lang.NullPointerException:ヌルオブジェクトのqueryForList()メソッドを呼び出せません
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)
したがって、jdbcTemplateはnullです。 – Tavo
これは単にjdbcTemplateがnullであることを意味します。これは依存関係の問題です!どこでjdbcTemplateオブジェクトを作成していますか? –
私はjdbcTemplateとdatasourceについて言及していませんが、実際にはEmployeeListServiceというサービスクラスでそれらを作成しました。理想的にはNULLを返すべきではありません。 – TechLife