У меня есть реализация, которая использует Integer как ключ в HashMap. Он уже тестируется с помощью JUnit. Но я хочу изменить его на SparseArray, который является более оптимизированной версией от Android. Я не уверен, как он будет тестироваться с использованием JUnit. У кого-нибудь есть лучший способ сделать это?
Единичный тест SparseArray с использованием JUnit (с использованием JVM)
Ответ 1
Unmock - действительно хороший проект, который дает вам это и многое другое. https://github.com/bjoernQ/unmock-plugin
Просто добавьте плагин, и он будет работать.
Ответ 2
Там эквивалентная реализация SparseArray в библиотеке поддержки под названием SparseArrayCompat, которая может использоваться в JVM Unit Tests. Кроме того, он имеет больше возможностей, чем собственный, поэтому вам лучше использовать это.
Ответ 3
Если кто-то все еще ищет, вам не нужны никакие сторонние библиотеки. Вы можете просто высмеять SparseArray.
Создайте файл SparseArray.java внутри приложения /src/test/java/android/util и вставьте следующее:
public class SparseArray<E> {
private HashMap<Integer, E> mHashMap;
public SparseArray() {
mHashMap = new HashMap<>();
}
public void put(int key, E value) {
mHashMap.put(key, value);
}
public E get(int key) {
return mHashMap.get(key);
}
}
Примечание. Если вы используете функции рядом с put
и get
вам также понадобится реализовать их здесь.
Ответ 4
Конфигурирование тестов с роботизированной структурой может быть проще.
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class XxxTest {
...
}