在Java 8 Mockito中抛出异常,显示传入void方法的参数

dzjeubhm  于 9个月前  发布在  Java
关注(0)|答案(2)|浏览(80)

我有一个使用Mockito的测试套件,如果传递了正确的参数,它会将某些void函数模拟为doNothing(),如果传递了错误的参数,它会抛出错误。当它检测到不正确的参数时,我希望它也打印它在抛出的异常中收到的参数。

Mockito.doThrow(new Exception(String.format("Failed step 1. Received parameters: %s, %s", param1, param2)))
        .when(factory).load(any(), any());
Mockito.doNothing().when(factory).load(eq("correct"), eq("correct"));

我似乎找不到这样做的方法,因为Additional Answers不适用于void返回类型。这需要为Java 8工作。

py49o6xq

py49o6xq1#

您可以使用doAnswer来按照您期望的方式打印参数。它将允许您使用getArgument(int i)方法访问模拟方法的参数。

Mockito.doAnswer(i -> {
            throw new Exception(String.format("Failed step 1. Received parameters: %s, %s", i.getArgument(0), i.getArgument(1)));
                })
                .when(factory).load(any(), any());
Mockito.doNothing().when(factory).load(eq("correct"), eq("correct"));
u3r8eeie

u3r8eeie2#

虽然CaptainAye的解决方案是一个伟大的解决方案,但我意识到我可以通过使用Mockito.verify来用更少的代码完成我想要的任务。

Mockito.verify(factory).load(eq("correct"), eq("correct"));

相关问题