Interessiert es Sie wirklich nicht, was der Inhalt des Byte-Arrays ist? Ich sehe dies häufig bei Unit-Tests, bei denen Benutzer anyX () - Matcher verwenden, weil sie praktisch sind, aber realistisch gesehen sollten Sie sich fast immer darum kümmern, was übergeben wird. Wenn Sie keine Antwort verwenden, die den Wert tatsächlich verbraucht, sind Sie wahrscheinlich sollte mit einem tatsächlich erwarteten Argument übereinstimmen.
Matunos
@ Matunos: Das ist umstritten. Die Verwendung der Any-Matcher kann die Tests vereinfachen, und die nächste Person, die den Test betrachtet, wird nicht durch unnötig genaue Übereinstimmungen abgelenkt und kann sich auf den eigentlichen Zweck des Tests konzentrieren.
Malik Atalla
@tbruelle: Bitte beachten Sie, dass jedes Array in Java ein Objekt ist. Das würde dir am Anfang helfen.
Warnung für alle: Jetzt ist veraltet, also würde ich für die abgestimmte Antwort Mockito.any (Byte []. Klasse)
Chexpir
10
Ich stimme Mutanos und Alecio zu. Außerdem kann man so viele identische Methodenaufrufe wie möglich überprüfen (Überprüfung der nachfolgenden Aufrufe im Produktionscode, die Reihenfolge der Überprüfungen spielt keine Rolle). Hier ist der Code:
Sie können jederzeit einen benutzerdefinierten Matcher mit erstellen argThat
Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(newArgumentMatcher<Object>(){@Overridepublicboolean matches(Object argument){YourTypeHere[] yourArray =(YourTypeHere[]) argument;// Do whatever you like, here is an example:if(!yourArray[0].getStringValue().equals("first_arr_val")){returnfalse;}returntrue;}}));
Das Schreiben eines benutzerdefinierten Matchers, wenn Mockito in der Lage ist, diesen Anwendungsfall zu behandeln, führt nur zu zusätzlichen technischen Schulden.
Antworten:
ich würde versuchen
any(byte[].class)
quelle
AdditionalMatchers.aryEq(expectedArray)
Versuche dies:
quelle
Ich würde lieber verwenden
Matchers.<byte[]>any()
. Das hat bei mir funktioniert.quelle
Ich stimme Mutanos und Alecio zu. Außerdem kann man so viele identische Methodenaufrufe wie möglich überprüfen (Überprüfung der nachfolgenden Aufrufe im Produktionscode, die Reihenfolge der Überprüfungen spielt keine Rolle). Hier ist der Code:
quelle
Ich habe dafür verwendet
Matchers.refEq
.quelle
Sie können Mockito.any () verwenden, wenn Argumente auch Arrays sind. Ich habe es so benutzt:
quelle
Was für mich funktioniert war
org.mockito.ArgumentMatchers.isA
beispielsweise:
das funktioniert gut.
Der Implementierungsunterschied voneinander ist:
quelle
Sie können jederzeit einen benutzerdefinierten Matcher mit erstellen
argThat
quelle