我正在 JUnit 4.xx 上运行 Java 测试。我试图从 try block 强制运行 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 block 得到执行,以便我的整个程序获得 100% 的行覆盖率? 感谢您提前提供的帮助。
最佳答案
如果你希望你的模拟抛出异常,你应该使用 willThrow
,而不是 willAnswer
:
given(spyConnect.getConnection()).willThrow(new SQLException());
关于java - 在 Java 中进行单元测试时如何强制调用 SQLException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50806673/