【发布时间】:2019-03-20 05:16:35
【问题描述】:
我有一个使用 statement.execute(query) 执行 SQL 语句的方法。如何测试这个 void 函数,因为它什么都不返回?我正在使用 Mockito 并使用 @Spy。
已为我的 execute() 方法附加了我的代码 sn-p,该方法接受查询的 ArrayList:
public void execute(Statement statement, ArrayList<String> queryList) throws SQLException {
SQLException sqlException = null;
// read script line by line
for (String line : queryList) {
try {
statement.execute(line);
} catch (SQLException e1) {
if (null == sqlException)
sqlException = e1;
else {``
sqlException.addSuppressed(e1);
}
}
}
if (null != sqlException)
throw sqlException;
}
这是我的测试类,我需要使用它来测试我的主类中的 void execute() 方法。我正在使用 Mocking 和 doNothing() 但我得到了不必要的存根异常。
@ExtendWith(MockitoExtension.class)
@RunWith(JUnitPlatform.class)
public class TestSQL {
@Spy
RunSQL runSQL=new RunSQL("dbConfig");
@Mock
BufferedReader br;
@Spy
ArrayList<String> queryList;
@Mock
Statement s;
@Mock
Connection c;
@Mock
RunSQL runsql;
@Test
public void testExecute() throws SQLException, IOException {
Mockito.when(br.readLine()).thenReturn("something");
runSQL.execute(s, queryList);
Mockito.doNothing().when(runsql).execute(s,queryList);
}
}
【问题讨论】:
-
能否也分享一下异常日志?
标签: java mysql unit-testing mockito junit4