查看下面的代码,我只希望对getSand()的调用发生一次,但测试失败了四次。这些电话在哪里发生?我想编写一个测试以确保只对getSand()进行一次调用。来源importorg.junit.Test;importorg.junit.runner.RunWith;importorg.mockito.Answers;importorg.mockito.Mock;importorg.mockito.runners.MockitoJUnitRunner;importstaticorg.mockito.Mockito.times;importstaticorg.mockito.Mockito.
我很惊讶地发现下面的简单代码示例并不适用于所有Mockito版本>1.8.5@RunWith(MockitoJUnitRunner.class)publicclassMockitoTest{@Mock(name="b2")privateBb2;@InjectMocksprivateAa;@TestpublicvoidtestInjection()throwsException{assertNotNull(a.b2);//failsassertNull(a.b1);//alsofails,becauseunexpectedlyb2mockgetsinjectedhere}staticcl
我想测试以下方法:publicvoiddispatchMessage(MessageHandlerhandler,Stringargument1,Stringargument2,Longargument3){handler.registerMessage(()->{dispatcher.dispatch(argument1,argument2,argument3);});}MessageHandler是一个辅助类,它将接受lambda形式的功能接口(interface)实现,并将其存储以供以后执行。有没有办法用mockito验证模拟MessageHandler的dispatchMess
我试图在when调用具有可变参数数量的方法(Java中的...东西)时使用参数匹配器,但没有成功。我的代码在下面,我还将列出我尝试使用来完成这项工作的所有行。importstaticorg.mockito.Mockito.*;publicclassMethodTest{publicStringtripleDot(String...args){Stringsum="";for(Stringi:args){sum+=i;}System.out.println(sum);returnsum;}publicstaticvoidmain(String[]args){try{MethodTestm
我遇到了一个问题,但找不到优雅的解决方案。所以问题出在Selenium网络驱动程序的模拟上,我不知道应该如何测试/模拟void方法。publicvoidclickAndWait(Stringlocator){if(isElementPresent(locator)==false)throwsomeexception;selenium.clickAndWait();//aproblematicdelegatingcalltoselenium}所以我要问的是,如何正确测试这样的方法,一个测试是针对抛出的异常,但如何正确测试我委托(delegate)给的那个void方法?
是否可以在使用非预定义参数调用模拟时抛出异常?有Answers.RETURNS_SMART_NULLS,但这并不是我真正需要的,因为如果null是合法的返回值,它就不起作用,这不会导致NullPointerException,而是稍后出现错误。编辑:一些背景。因此,在Mockito中定义模拟时,您可以像这样指定每个调用的返回值:when(myMock.someMethod(arg1,arg2)).thenReturn(returnValue);当使用参数调用myMock.someMethod时,我在测试中没有给出返回值,它只返回null。我想将其配置为立即崩溃并告诉我我忘记为某些参数组
我有一个相当复杂的测试用例,我正在尝试将以下verify()添加到:verify(userService).getUserById(anyLong()).setPasswordChangeRequired(eq(Boolean.TRUE));失败并出现以下错误:org.mockito.exceptions.verification.TooManyActualInvocations:userService.getUserById();Wanted1time:->attest.controllers.AuthenticationControllerMockTest.testLookupsE
我有一个返回void的save()方法:publicvoidsave(MyThing)throwsSaveFailureException{...}对save()的调用具有处理异常的重试逻辑。我想通过模拟第一次调用save()来测试它,以便它抛出异常,第二次调用应该成功,没有异常。Mockito有一个很好的方法来处理非void方法的连续行为,例如:when(mock.save()).thenThrow(...).thenReturn(...)我怎样才能对返回void的方法做同样的事情? 最佳答案 你可以这样做:doThrow(...
我有以下情况:classWorker{publicIntegersomework(){Integerk=0;Helperh=newHelper();h.change(k);returnk;}}classHelper{publicvoidchange(Integerk){//k=Somecalcs}}我正在为Worker做单元测试,显然我想模拟Helper类,以便他的change方法总是将1放入k。我的实际情况更复杂,但这段代码代表了问题。感谢您的帮助。 最佳答案 我有一个定义如下的方法:classTemplate{publicvoi
项目场景:写java后端,用mockito做单元测试问题描述跑测试代码的时候,一直报空指针错:测试代码如下:@RunWith(MockitoJUnitRunner.class)publicclassRuleServiceImplTest{@InjectMocksprivateRuleServiceImplruleService;@MockprivateRuleMappermockRuleMapper;@Beforepublicvoidsetup(){MockitoAnnotations.initMocks(this);}@TestvoidaddRule(){RuleVOruleVO1=newR