Единичный тест SparseArray с использованием JUnit (с использованием JVM)

У меня есть реализация, которая использует Integer как ключ в HashMap. Он уже тестируется с помощью JUnit. Но я хочу изменить его на SparseArray, который является более оптимизированной версией от Android. Я не уверен, как он будет тестироваться с использованием JUnit. У кого-нибудь есть лучший способ сделать это?

Ответ 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 {
    ...
}