Ich versuche, mit if(), thenReturn() auf eine if-Bedingung zu testen, aber wenn ich meinen Testfall ausführe, fehlt mir der Methodenaufruf, obwohl ich habe die Klasse verspottet, in der die Methode implementiert ist.Mockito-Ausnahme: Fehlender Methodenaufruf beim Versuch, eine if-Bedingung zu testen
dies ist das, wenn die Bedingung Ich versuche
if(request.getProcessType() == IPRequest.IPREQUEST_TYPE_TOMO_RECON)//IPREQUEST_TYPE_TOMO_RECON=9, this is the condition I am trying to test
{
params.setTubeAngle(accessor); //I am verifying if these methods are invoked
params.setTomoFocalSpot(accessor);
}
Dies ist, wie ich bin Überprüfung für die if-Bedingung
when(request.getProcessType()).thenReturn(IPRequest.IPREQUEST_TYPE_TOMO_RECON);
Mockito.verify(ipImgParam,Mockito.times(3)).setTubeAngle(Mockito.any(AttributeExtractor.class));
Ich habe bereits verspottet „Anfrage“ mit @Mock Anmerkung zu verspotten, aber bekomme immer noch die folgende Ausnahme.
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
2. inside when() you don't call method on mock but on some other object.
3. the parent of the mocked class is not public.
It is a limitation of the mock engine.
at common.systemreprocessingservice.test.ImageParamsBuilderTest.testbuildProcessingInfoIf(ImageParamsBuilderTest.java:134)
Ich bin mir nicht sicher, was ich falsch mache. Kann jemand helfen?
„Anfrage“ ist ein Objekt einer öffentlichen Klasse, die ich verspottet haben @Mock verwenden. Wenn ich MockitoAnnotations.initMocks() aufruft, bekomme ich Nullzeiger-Ausnahmen, also habe ich das ignoriert. – hushie
Ich denke, es gibt ein Problem, dass Ihre Mocks nicht in die Klasse injiziert werden. Hast du versucht, es ohne Anmerkungen zu verspotten? Mit 'Request request = mock (Request.class)'. PS - Wenn nicht annotierte Mocking auch nicht funktioniert, sollten Sie versuchen, diese NullPointerException zuerst aufzulösen. – blu3
ja Ich habe versucht, es auch ohne die Annotation zu verspotten, aber es hat nicht funktioniert, stattdessen habe ich eine Ausnahme wie 'wollte, aber nicht aufgerufen: iPImgParams.setTubeAngle (); -> bei common.systemreprocessingservice.test.ImageParamsBuilderTest.testbuildProcessingInfoIf (ImageParamsBuilderTest.java:137) Es gab jedoch andere Interaktionen mit dieser Mock: -> bei common.systemreprocessingservice.ImageParamsBuilder.buildProcessingInfo (ImageParamsBuilder.java:34) ' –
hushie