Я разрабатываю программное обеспечение, которое загружает информацию из XML-файлов, используя реализацию Android java.xml.parsers.DocumentBuilder и DocumentBuilderFactory. Я пишу модульные тесты своих объектов, и мне нужно иметь возможность предоставлять множество xml-файлов, которые будут использовать тестируемый код. Я использую Eclipse и имею отдельный Android Test Project. Я не могу найти способ поставить тестовый xml в тестовый проект таким образом, чтобы тестируемый код мог открыть файлы.Как предоставить файлы данных для тестов на андроид-модуле
- Если я помещаю файлы в/активы тестового проекта, тестируемый код не может его увидеть.
- Если я поместил файлы в/активы тестируемого кода, он, конечно, может видеть файлы, но теперь я забиваю свою реальную систему только тестовыми файлами данных.
- Если я копирую файлы в каталог/sdcard/data, я могу открыть их из тестируемого кода, но это мешает автоматизации моих тестов.
Любые предложения о том, как иметь разные тестовые файлы xml, находятся в тестовом пакете, но будут видимы для кода, который будет тестироваться.
Вот как я попытался структурировать тест блока:
public class AppDescLoaderTest extends AndroidTestCase
{
private static final String SAMPLE_XML = "sample.xml";
private AppDescLoader m_appDescLoader;
private Application m_app;
protected void setUp() throws Exception
{
super.setUp();
m_app = new Application();
//call to system under test to load m_app using
//a sample xml file
m_appDescLoader = new AppDescLoader(m_app, SAMPLE_XML, getContext());
}
public void testLoad_ShouldPopulateDocument() throws Exception
{
m_appDescLoader.load();
}
}
Это не работает, как файл SAMPLE_XML в контексте теста, но AndroidTestCase обеспечивает контекст для тестируемой системы, который не может видеть актив из тестового пакета.
Это модифицированный код, который работал в ответ Дано:
public class AppDescLoaderTest extends InstrumentationTestCase
{
...
protected void setUp() throws Exception
{
super.setUp();
m_app = new Application();
//call to system under test to load m_app using
//a sample xml file
m_appDescLoader = new AppDescLoader(m_app, SAMPLE_XML, getInstrumentation().getContext());
}
Спасибо. Это сработало, только я сначала должен был изменить свой тестовый пример на InstrumentationTestCase. –
Я изменил свой вопрос, чтобы показать код, который сработал. Спасибо за вашу помощь. –
+1 для варианта 2.Просто добавлен каталог ресурсов на уровне res и новый код «только что сработал» в сборке Android Studio. Не нужно суетиться со способами построения. –