Я занимаюсь разработкой программного обеспечения, которое загружает информацию из файлов XML с использованием реализации Android java.xml.parsers.DocumentBuilder и DocumentBuilderFactory. Я пишу модульные тесты своих объектов, и мне нужно предоставить множество XML-файлов, которые будут проверять тестируемый код. Я использую Eclipse и у меня есть отдельный Android Test Project. Я не могу найти способ поместить тестовый XML в тестовый проект так, чтобы тестируемый код мог открывать файлы.
- Если я поместил файлы в / assets тестового проекта, тестируемый код не сможет его увидеть.
- Если я помещаю файлы в / assets тестируемого кода, он, конечно, может видеть файлы, но теперь я загромождаю свою реальную систему тестовыми файлами данных.
- Если я вручную копирую файлы в каталог / 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());
}