Подтвердить что ты не робот

IsolatedContext против AndroidTestCase.getContext()

Я пишу несколько тестов для проверки моего кода базы данных sqllite. Может кто-то здесь объяснить, будет ли разница в написании этих тестов, используя контекст, который я получаю от AndroidTestCase.getContext() или используя IsolatedContext.

4b9b3361

Ответ 2

Для тех, кто не хочет следовать ссылке на группу Google, здесь приведен ответ:

AndroidTestCase.getContext() возвращает обычный объект Контекста. Это Контекст тестового примера, а не тестируемого компонента.

IsolatedContext возвращает "макет" контекста. Я поставил "макет" в кавычки потому что это не фальшивка в нормальном смысле этого термина (для тестирования). Вместо этого это шаблонный контекст, который вы должны настроить самостоятельно. Это "изолирует" вас от запущенной системы Android, так что ваш контекст или ваш тест случайно не выходит за пределы испытательного прибора. Для Например, IsolatedContext не случайно попадет в производство базы данных (если вы не настроите ее на это!) Обратите внимание, однако, что некоторые методов в изолированномконтексте могут вызывать исключения. IsolatedContext задокументирован в Руководстве разработчика по Framework Темы > Тестирование, как в Основах тестирования, так и в Content Provider Тестирование.

Вот документы Android на IsolatedContext.

И вот соответствующий раздел документа "Основы тестирования" .

Ответ 3

У меня была простая проблема: мне нужно проверить свой класс DAO, не касаясь реальной базы данных. Поэтому я нашел IsolatedContext из документов. Но, наконец, я нашел другой контекст в тех же документах: RenamingDelegatingContext может быть проще в использовании. Вот мой тестовый пример:

public class AddictionDAOTest extends AndroidTestCase {

    @Override
    public void setUp() throws Exception {
        super.setUp();
        setContext(new RenamingDelegatingContext(getContext(), "test_"));
    }

    public void testReadAllAddictions() throws Exception {
        ImQuitDAO imQuitDAO = new ImQuitDAO(getContext());
        ...    
    }
}