mock强制方法中的部分mock变为异常并继续



我有一个带有一些逻辑和异常块的方法,想测试异常块中的内容。

方法:

Class Validator() {
    protected Validator(blah,blah) {
    }
    protected boolean doStuff(String a, String b) {
        try {
          isValidInput(a){
        } catch (Exception e) {
            b = "unknown error"
        }
    }
测试用例:

@Test
public void testException() {
Validator testValidator = new testValidator(blah, blah);
        Validator spy = spy(testValidator);
        String var2 = "unknown error"
        doReturn(new Exception()).when(spy.doStuff(var1, var2));
        assertEquals("unknown error", var2);
}

我如何强制真正的方法进入异常块并继续存根?

首先,忘记使用spy -如果isValidInput能够抛出异常,那么让它抛出异常

如果在isValidInput()中使用的合作者可以抛出Exception,那么使用Mockito模拟。如果这只是你的代码,那么你应该能够设置a,这样它就会产生一个异常。

您仍然需要在isValidInput()上编写一套完整的测试-研究使用@Test注释中的expected选项(我假设您在这里使用JUnit)来指定抛出异常是测试的预期结果。但是请不要抛出Exception -使用它的一个有意义的子类:-)

和@Dave Newton评论,测试var2永远不会将工作在doStuff的范围之外。

相关内容

  • 没有找到相关文章

最新更新