use*_*976 10 java unit-testing jdbc resultset mockito
我必须写一些单元测试,但我有模拟ResultSet
和jdbc的问题Connection
.
我有这个方法:
@Test
public void test3() throws SQLException, IOException {
Connection jdbcConnection = Mockito.mock(Connection.class);
ResultSet resultSet = Mockito.mock(ResultSet.class);
Mockito.when(resultSet.next()).thenReturn(true).thenReturn(true).thenReturn(true).thenReturn(false);
Mockito.when(resultSet.getString(1)).thenReturn("table_r3").thenReturn("table_r1").thenReturn("table_r2");
Mockito.when(jdbcConnection
.createStatement()
.executeQuery("SELECT name FROM tables"))
.thenReturn(resultSet);
//when
List<String> nameOfTablesList = null;
try {
nameOfTablesList = Helper.getTablesName(jdbcConnection);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//then
Assert.assertEquals(nameOfTablesList.size(), 3);
}
Run Code Online (Sandbox Code Playgroud)
错误显示在行中executeQuery("SELECT name FROM tables")
,听起来像这样:
java.lang.NullPointerException HelperTest.test3(HelperTest.java:71)
Run Code Online (Sandbox Code Playgroud)
任何想法都出错了?
Nic*_*olt 20
您需要创建一个预期上jdbcConnection.createStatement()
.
默认情况下,我相信a null
会返回.
应该读类似的东西:
ResultSet resultSet = Mockito.mock(ResultSet.class);
Mockito.when(resultSet.next()).thenReturn(true).thenReturn(true).thenReturn(true).thenReturn(false);
Mockito.when(resultSet.getString(1)).thenReturn("table_r3").thenReturn("table_r1").thenReturn("table_r2");
Statement statement = Mockito.mock(Statement.class);
Mockito.when(statement.executeQuery("SELECT name FROM tables")).thenReturn(resultSet);
Connection jdbcConnection = Mockito.mock(Connection.class);
Mockito.when(jdbcConnection.createStatement()).thenReturn(statement);
Run Code Online (Sandbox Code Playgroud)