IsolatedContext против AndroidTestCase.getContext () - PullRequest
12 голосов
/ 10 января 2011

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

Ответы [ 3 ]

8 голосов
/ 28 июля 2013

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

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

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

Вот документы для Android по IsolatedContext.1012 * А вот соответствующий раздел документа Основы тестирования.

3 голосов
/ 18 января 2011
2 голосов
/ 30 ноября 2014

У меня была простая проблема: мне нужно проверить мой класс 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());
        ...    
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...