2014-09-05 7 views
20

У нас есть необычное требование для выполнения модульных тестов нашего приложения для Android, которые используют активы, которые необходимы только для модульного тестирования.Настройка каталога настраиваемых активов для модульного тестирования в Android Studio

С SDK на основе Eclipse это было просто и очевидно - тестовый проект был отдельным проектом со своей собственной папкой с ресурсами. С Android Studio это предназначено для того, что один настраивается в build.gradle (или по соглашению).

Наши юнит-тесты выполняются, наконец, но я исчерпал каждое предложение, которое я нашел, найти в пользовательской (и, в идеале, объединенной) папке с ресурсами. Вот что я пытался:

  • Добавление закрытия теста на sourceSets в андроиде закрытия (закрытием Я имею в виду то, что между фигурными скобками в build.gradle).

    androidTest { 
        assets.srcDirs = ['src/androidTest/assets/'] 
    } 
    
  • То же самое, но с «тест» в качестве имени sourceSet (в отличие от «androidTest», выше), а также с «instrumentTest».

  • Различные комбинации выше, плюс androidTest.setRoot («test»), androidTest.setRoot («androidTest»), оба из которых заставляют наши модульные тесты не распознаваться («пустой набор»).

Этот вопрос может быть более обобщенно сформулирован как «как использовать разные каталоги для модульных тестов в Android Studio».

Мы работали над документацией с Android, и мы не понимаем ее, это неправильно, или где-то есть ошибка.

Любая помощь будет очень оценена.

ответ

19

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

В конце концов, я расскажу об этом как об ошибке в конструкции градиента Android, но в отсутствие какой-либо убедительной документации, которая должна оставаться мнением.

Похоже, что «androidTest/assets» просто не работает. Однако «debug/assets» делает. Так же делает «debug/java», поэтому решение заключается в том, чтобы поместить все и все ресурсы и код тестирования в корень отладки, за исключением самих тестов.

Я также добавил следующие изменения в мою build.gradle:

androidTest { 
     assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/'] 
     java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java'] 
    } 

И теперь я функционирующий модульные тесты, использующие активы и издевается, которые неизвестны к построению релиза.

+3

Кажется, что Google исправил это.Я использую Android Studio 0.8.6 + gradle 1.12, а папка «androidTest/assets» работает без какого-либо дополнительного скрипта. – weidongxu

3

Я использую Android Studio 1.3 + Gradle 1.2.3, а src/androidTest/активы не работают для меня. Я поместил все в src/debug без каких-либо изменений в build.gradle, и это сработало. Android, по-видимому, автоматически поднимает элементы из папки отладки при создании apk.

+0

Отличный совет @Chandan, это решило мою проблему. – ovidiu

3

Я не знаю, как это было раньше, но я смог создать аппаратные модульные тесты на Android, где я могу читать тестовые активы или производственные активы. См. this ответ для получения дополнительной информации.

+2

Ссылка, которую вы отправили, была особенно полезна! Большое спасибо. Это должен быть принятый ответ. –

Смежные вопросы