Как я могу получить контекст самого тестового приложения в ApplicationTestCase <MyApp>? - PullRequest
2 голосов
/ 29 августа 2011

Как я могу получить контекст самого тестового приложения в ApplicationTestCase<MyApp>?

Я использую ресурсы тестового приложения для хранения некоторых справочных данных, но я не могу получить его контекст, насколько я вижу.

Я пытаюсь сделать следующее:

referenceContents = readRawTextFile(
    getSystemContext(),
    //test application's res namespace is myApp.test.* 
    myApp.test.R.raw.reference_file);

, где readRawTextFile - простая программа чтения текста, но данные, которые я получаю, неверны.

1 Ответ

4 голосов
/ 13 июля 2012

Если вам нужен контекст тестируемого приложения (например, MyApp), то вот как вы это делаете:

public class MyAppTest extends ApplicationTestCase<MyApp> {

    public MyAppTest () {
        super(MyApp.class);
    }

    public MyAppTest (Class<MyApp> applicationClass) {
        super(applicationClass);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        createApplication();
    }

    public void testMyApp() throws Exception {
        // Retrieves a file in the res/xml folder named test.xml
        XmlPullParser xml = getContext().getResources().getXml(R.xml.test);
        assertNull(xml);
    }
}

Как видите, вы получаете контекст тестируемого приложения.используя:

getContext()

в вашем тестовом примере.

Однако, если у вас есть два отдельных проекта: один - ваше приложение, другой - ваш тестовый проект, и вам нужен контекст тестового проекта, тогдаединственный выбор - расширить InstrumentationTestCase вместо ApplicationTestCase - однако это означает, что вы не сможете получить контекст проекта приложения, а только контекст вашего тестового проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...