实际上,这是为了代码覆盖率,我很难覆盖 catch
语句。
有任何想法吗?
例如:
我希望我的 selectSomethingBySomething()
方法(从 db 中选择)抛出一个 SQLException
,这对测试方法来说非常困难,而无需实际接触实际的源代码。还考虑到我只能控制的是 WHERE
子句的参数的约束。
最佳答案
您需要先模拟包含 selectSomethingBySomething()
的类,然后记录此行为。在 mockito 你会说:
SomeDao someDaoMock = mock(SomeDao.class);
willThrow(new SQLException())).given(someDaoMock).selectSomethingBySomething();
然后将
someDaoMock
注入(inject)到您的测试类中,当它调用 someDaoMock.selectSomethingBySomething()
时,它会抛出先前选择的异常。关于java - 如何强制方法在 jUnit 测试中抛出异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11565196/