Kann eine Ausnahme ausgelöst werden, wenn ein Schein mit nicht vordefinierten Argumenten aufgerufen wird? Es gibt Answers.RETURNS_SMART_NULLS
, aber es ist nicht wirklich was ich brauche, da es nicht funktioniert, wenn null
legitimer Rückgabewert ist, der nicht zu NullPointerException
führt, sondern eher zu Fehlern später.Wie kann Mockito eine Ausnahme auslösen, wenn ein Mock mit nicht definierten Parametern aufgerufen wird?
Bearbeiten: etwas Hintergrund. Also, in Mockito, wenn Sie ein Modell zu definieren, geben Sie die Rückgabewerte für jeden Aufruf wie folgt aus:
when(myMock.someMethod(arg1, arg2)).thenReturn(returnValue);
Wenn myMock.someMethod
mit Argumenten aufgerufen wird, für die ich keinen Rückgabewert im Test gegeben hat, es gibt einfach null
zurück. Ich möchte es so konfigurieren, dass es sofort abstürzt und mir sagt, dass ich vergessen habe, den Rückgabewert für eine bestimmte Kombination von Parametern zu definieren.
Edit 2: Es gab Vorschläge, um eine benutzerdefinierte defaultAnswer
, die Ausnahmen beim Aufruf ausgelöst würde. Leider funktioniert das nicht. Die Standardantworten 'answer()
Methode wird aufgerufen, auch wenn ein Schein vorhanden ist. Hier ist ein Beispiel:
public class Test {
public static class Adder {
public int add(int a, int b) {
return a + b;
}
}
public static final Answer<Object> THROW_ON_UNDEFINED_ARGS = new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
throw new IllegalArgumentException(
String.format("Calling a mock with undefined arguments: %s %s",
invocation.getMethod(),
Arrays.toString(invocation.getArguments())));
}
};
public static void main(String[] args) {
Adder adderMock = mock(Adder.class, THROW_ON_UNDEFINED_ARGS);
when(adderMock.add(2, 3)).thenReturn(5);
System.out.println(adderMock.add(2, 3));
}
}
Die Ausnahme wird ausgelöst, obwohl adderMock.add(2, 3)
definiert ist.
"Ist es möglich, eine Ausnahme auszulösen, wenn ein Schein mit nicht vordefinierten Argumenten aufgerufen wird?" - Was bedeutet das genau? Sie möchten das Auslösen einer Ausnahme simulieren, wenn einige Parameter übergeben werden? Was nicht vorgefertigte Argumente bedeutet? – M4ks
Also definieren Sie in Mockito die Rückgabewerte für Mocks wie folgt: 'when (myMock.someMethod (arg1, arg2)). ThenReturn (result)'. Wenn 'myMock.someMethod' mit einigen anderen Argumenten aufgerufen wird, wird null zurückgegeben.Ich möchte, dass es sofort scheitert und mir sagt, dass das Pseudo mit Argumenten aufgerufen wurde, für die ich keinen Rückgabewert definiert habe. –