2017-06-30 3 views
0

Das Android Studio empfiehlt mir SparseIntArray anstelle von Hashmap<Integer, Integer> von Standard-Java zu verwenden.Lokale Unit-Tests mit SparseIntArray und anderen von android.util. *

SparseIntArray Karten Ganzzahlen zu ganzen Zahlen. Im Gegensatz zu einem normalen Array von Ganzzahlen kann es Lücken in den Indizes geben. Es ist eher speichereffizienter als die Verwendung einer HashMap zum Zuordnen von Ganzzahlen zu Ganzzahlen, da die Schlüssel und Werte nicht automatisch eingeordnet werden und die Datenstruktur nicht auf einem zusätzlichen Eintragsobjekt für jede Zuordnung beruht.

Ich denke, es passt wirklich meinen Code, aber ich kann keine Methoden verwenden, die diese Klasse in Local Unit Tests enthalten. Ich beende immer mit RuntimeException ...

java.lang.RuntimeException: Method put in android.util.SparseIntArray not mocked. See http://g.co/androidstudio/not-mocked for details. 
    at android.util.SparseIntArray.put(SparseIntArray.java) 
    ... 

Gibt es eine Möglichkeit, diese Methode für lokale Tests zu importieren? Ich denke nicht, dass es Android-Funktionen verwendet. Das unitTests.returnDefaultValues = true gibt nur Standardwerte für alle Aufrufe zurück. Ich weiß, dass ich Instrumented Unit Tests verwenden kann, aber es verlangsamt den Testprozess.

Antwort

1

Sie sollten das Robolectric-Framework verwenden, wenn Sie die Klasse mit Plattformabhängigkeiten testen möchten: http://robolectric.org/

Verwandte Themen