Как скопировать файлы из активов по методу setUp из Android Junit ServiceTestCase? - PullRequest
1 голос
/ 05 июля 2011

Я пишу тестовый код JUnit для реализации сервиса Android, и мне нужно инициализировать тесты с некоторыми файлами, скопированными на SDCard.Моя подпись класса выглядит следующим образом:

public class ImageServiceTest extends ServiceTestCase<ImageService>  

Я пытаюсь использовать этот совет для копирования файлов из ресурсов, но метод getAssets () должен расширять класс Activity.

public void copyAssets() {
    AssetManager assetManager = getAssets();
    ...
}

Итак .. Как я могу скопировать файлы из ресурсов на SDCard для настройки теста junit в Android?

Спасибо заранее.

Ps:

'getSystemContext (). GetAssets ();', 'getContext (). GetAssets ();', 'getApplicationContext ();'возвращает контекст проекта службы, а не тестовый контекст проекта.

Теперь я пытаюсь использовать инструментарий, однако для этого требуется действие, и я работаю с проектом службы.Я смотрю, как использовать Инструментарий без деятельности ...

Ответы [ 3 ]

7 голосов
/ 08 июля 2011

Хорошо, это было довольно легко.

Моя главная проблема заключалась в том, чтобы получить контекст из тестового проекта для доступа к папке их ресурсов.Но getContext () возвращает основной контекст проекта.Итак, чтобы получить контекст тестового проекта, я создаю новый контекст, передав тестовый пакет:

Context mTestAppContext = getContext().createPackageContext("com.project.myapp",
                Context.CONTEXT_IGNORE_SECURITY);

: -)

1 голос
/ 05 июля 2011

Вы можете сделать это:

protected void setUp() throws Exception {
    super.setUp();
    AssetManager assets = getSystemContext().getAssets();
    InputStream input = assets.open("file.txt");
    assertNotNull(input);
}

, но учтите, что в этом случае активы должны быть в основном проекте Сервиса.

0 голосов
/ 25 августа 2012

Существует также скрытый метод, в AndroidTestCase , который предоставляет то, что необходимо.Это может быть подвергаться самоанализу .

private Context getTestContext() throws Exception
{
  return (Context)getClass().getMethod("getTestContext").invoke(this);
}
...