我在JUnit 4.xx上运行Java测试。我试图强制从try块运行SQLException。我以很多不同的方式经营Mockito,但我没有得到我想要的结果。
这是我的主要文件:
public boolean close() {
if (connection == null) {
throw new IllegalStateException("Connection never initialized!");
}
try {
connection.close();
return true;
}
catch (SQLException e)
{
LOGGER.logp(Level.INFO, CLASS_NAME, "close", e.getMessage());
return false;
}
}
这是我的测试文件:
@Test
public void testFail2() throws SQLException {
JDBCConnection spyConnect = mock(JDBCConnection.class);
given(spyConnect.getConnection()).willAnswer(invocationOnMock -> new SQLException());
assertFalse(spyConnect.close());
}
总之,如何让catch块被执行以便我获得100%的整体程序覆盖率? 感谢您的帮助。
答案 0 :(得分:0)
如果您希望模拟引发异常,则应使用willThrow
,而不是willAnswer
:
given(spyConnect.getConnection()).willThrow(new SQLException());