Организуйте общий код между androidTest и test

Я создаю компонент Android в виде проекта Gradle. Чтобы протестировать пользовательский интерфейс моих компонентов в нескольких конфигурациях с помощью структуры espresso, я есть TestActivity в androidTest исходном наборе, который я могу использовать.

Чтобы прояснить файловое дерево:

src/
    androidTest/
        java/my.package/
            TestActivity.kt
            ...
        res/layout/
            my_test_activitity.xml
    test/
        java/my.package/
            MyUnitTests.kt

Теперь я хочу начать использовать robolectric для некоторых своих модульных тестов, а также протестировать свой TestActivity оттуда. Интересно, что Android Studio не жалуется, когда я устанавливаю Robolectric в MyUnitTests.kt:

val activity = Robolectric.setupActivity(TestActivity::class.java) // no error

Однако, когда я пытаюсь запустить модульные тесты, gradle выдает мне эту ошибку:

e: src/test/java/my.package/MyUnitTests.kt: Unresolved reference: TestActivity

Я предполагаю, что исходный набор test не имеет доступа к исходному набору androidTest, хотя Android Studio, похоже, думает, что он есть.

Как я могу это исправить (сделать классы и ресурсы в androidTest доступными из test)? Это вообще правильный подход при совместном использовании кода между инструментальными тестами и модульными тестами, или есть лучший способ?


person Georg Grab    schedule 06.11.2017    source источник


Ответы (1)


Я часто обхожу это, создавая исходный набор src / commonTest / java и предоставляя его как инструментальным, так и модульным тестам, добавляя следующее в мой файл gradle:

  android {
    sourceSets {
        String sharedTestDir = 'src/commonTest/java'
        test {
            java.srcDir sharedTestDir
        }
        androidTest {
            java.srcDir sharedTestDir
        }
    }
}
person jdonmoyer    schedule 06.11.2017
comment
у меня не работает, я пробовал вот так. И он продолжает говорить мне, что кода не существует - person Lena Bru; 01.07.2018
comment
@LenaBru, можете ли вы опубликовать изображение, показывающее структуру вашей директории и код для ее настройки из вашего файла gradle? - person jdonmoyer; 02.07.2018