Настройка каталога настраиваемых ресурсов для модульного тестирования в Android Studio

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

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

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

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

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

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

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

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

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

Ответ 1

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

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

Похоже, что "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']
    }

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

Ответ 2

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

Ответ 3

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