Как предоставить файлы данных для модульных тестов Android

Я разрабатываю программное обеспечение, которое загружает информацию из XML-файлов, используя реализацию Android java.xml.parsers.DocumentBuilder и DocumentBuilderFactory. Я пишу модульные тесты своих объектов, и мне нужно иметь возможность предоставлять различные файлы xml, которые будут выполнять тестируемый код. Я использую Eclipse и имею отдельный тестовый проект Android. Я не могу найти способ поместить тестовый 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());
  }
48
задан Michal Harakal 14 August 2016 в 17:03
поделиться