2016-08-02 9 views
6

ich einen JUnit-Test zu schreiben versuchen, das anzeigt, ob die folgende Methode aufgerufen wird, überprüfen wird:Mit Mockito Matchers.any() mit android.support.annotation.IntDef benutzerdefinierter Anmerkung

public long executeRequest(@RequestCodes.Code.RequestAnnotation int requestCode, Object requestInformation, RequestListener requestListener) { 

    boolean success = false; 

    ... do stuff ... 

    return success ? 1L : -1L; 

} 

in einem Test unter Verwendung von:

Mockito.when(mockedRequest.executeRequest(Matchers.any(RequestCodes.Code.RequestAnnotation.class), Matchers.any(RequestWrapper.class), Matchers.any(RequestListener.class))).thenReturn(1L); 

die RequestCodes.Code.RequestAnnotation Klasse ist ein elementarer indef Schnittstelle einen int mit dem Aufruf zu identifizieren, mit einem Schalter zu machen. So ähnlich wie this.

Matchers.any(RequestCodes.Code.RequestAnnotation.class) funktioniert hier nicht, und ich habe Matchers.any(), Matchers.anyInt(), Matchers.isA(RequestCodes.Code.RequestAnnotation.getClass()) (wie auch alles andere, was in den Sinn kam) versucht, ohne Erfolg.

Alle Vorschläge würden sehr geschätzt werden.

+2

'AnyInt()' sollte definitiv funktionieren, nur Lint wird sich beschweren. Sie könnten auch einen benutzerdefinierten Matcher für diesen Anwendungsfall einführen. – Egor

+0

Ist heute bei der Arbeit gleich. Könnte [Ausgabe 222711] (https://code.google.com/p/android/issues/detail?id=222711) einen Blick wert sein? – piratemurray

Antwort

2

Vorerst können Sie diesen Fehler unter Verwendung von @SuppressWarnings("WrongConstant") für diesen spezifischen Test unterdrücken. Es funktioniert gut und hält Ihre Produktion sauber.