Hier gibt es jedoch einen bemerkenswerten Vorbehalt. Der Rückgabetyp von AdditionalMatchers::not ist 0 für alle numerischen Primitiven, false für die booleschen Primitiven und Null für alle nicht primitiven Objekte T. Dies bedeutet, dass Sie auf hässliche Warnungen stoßen, wenn Sie versuchen, es für verspottete Methoden zu verwenden, bei denen die Parameter mit @Nonnull kommentiert sind.
Möglicherweise können Sie dies auch über die Bestellung tun. Wenn Sie einen setzen when(anyString) und when(eq("a")) In der richtigen Reihenfolge sollte Mockito sie der Reihe nach testen und gegebenenfalls die „a“-Logik und ansonsten die „anyString“-Logik ausführen.
Bei Mockito ist das letzte Stubbing das Wichtigste. Das bedeutet, dass Sie einfach die Standard-Matcher für Ihre Bedürfnisse verwenden können:
// "Default" return values.
when(classA.getString(ArgumentMatchers.anyString())).thenReturn(somethingelse);
// Specific return value for "a"
when(classA.getString(ArgumentMatchers.eq("a"))).thenReturn(something);
Beachten Sie, dass Sie haben um ArgumentMatchers für beide zu verwenden, da Sie sie mischen.
Ich habe diesen Ansatz tatsächlich gewählt, nachdem ich mir die vorgeschlagenen Antworten sorgfältig angesehen hatte:
Ich denke, Sie könnten die Antwort als akzeptiert markieren.
– Troig
7. Februar 2018 um 15:44 Uhr