Тестирование источников данных в модульном тестировании Android - PullRequest
3 голосов
/ 27 января 2010

Я хочу проверить синтаксический анализ данных, возвращаемых с сервера.

Я подумал, что мог бы создать несколько тестовых XML-файлов и затем передать их в анализатор саксофонов, который использует мой пользовательский обработчик данных (как в тестируемом приложении).

Но куда мне поместить эти тестовые XML?

Я пытался с [project_root]/res/xml, но затем я получаю ошибку:

android.content.res.Resources$NotFoundException: Resource ID #0x7f040000 type #0x1c is not valid at android.content.res.Resources.loadXmlResourceParser(Resources.java:1870) at android.content.res.Resources.getXml(Resources.java:779)

Значит ли это, что xml недействителен, или что андроид не может найти файл XML? (Я использую тот же XML, который приходит с сервера - скопировал его с сетевой панели firebug и вставил в файл).

Можно ли как-то прочитать этот XML как текстовый файл, поскольку getContext().getResources().getXml(R.xml.test_response1) возвращает XmlResourceParser вместо String (что я бы предпочел)?

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Просто поместите файл в ваш текущий пакет (т.е. в пакет ресурсов) и используйте загрузчик классов ...

private InputStream getTestImage(String pathToFile) throws IOException
        {
            final ClassLoader loader = getClass().getClassLoader();
            assertNotNull(loader);
            final InputStream resourceAsStream = loader.getResourceAsStream(pathToFile);
            assertNotNull(resourceAsStream);
            return resourceAsStream;
        }
1 голос
/ 28 января 2010

Введите xmls в MyAppTest/assets, например MyAppTest/assets/my.xml, а затем прочитайте его, используя

InputStream myxml = getInstrumentation().getContext().getAssets().open("my.xml");

тогда вы можете вызвать парсер с этим потоком.

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