2016-12-05 7 views
2

У меня проблема с тестами Kotlin Espresso. Я применил Kotlin-Android плагин Gradle в скрипте сборки модуля, и тесты запускаются без проблем в Android Studio (тестовый класс аннотируется и запускается AndroidJUnit4 runner), но выполнение задачи Gradle «assembleDebugAndroidTest» из терминала не может найти мои основные классы . и пакеты (классы, используемые в тестах) Он бросает Unresolved Reference ошибкуТесты на эспрессо для Android (написанные в Котлине) не видят основных классов и пакетов

Вот раздел sourceSets сценария сборки:.

sourceSets { 

    androidTest { 
     java.srcDir 'src/sharedTestUtils/java' 
     java.srcDir 'src/acceptanceTests/java' 
     java.srcDir 'src/functionalTests/java' 
     java.srcDir 'src/sharedTestUtils/kotlin' 
     java.srcDir 'src/acceptanceTests/kotlin' 
     java.srcDir 'src/functionalTests/kotlin' 
    } 

    acceptanceTests { 
     java.srcDir 'src/sharedTestUtils/java' 
     java.srcDir 'src/sharedTestUtils/kotlin' 
    } 

    // source sets for Kotlin 
    // main.java.srcDirs += 'src/main/kotlin' 
    test.java.srcDirs += 'src/test/kotlin' 

} 

и тест зависимостей в модуле:

apply plugin: 'kotlin-android' 

dependencies { 
    androidTestCompile deps.kotlin 
    androidTestCompile deps.kotlinTest 
    androidTestCompile deps.kotlinTestJunit 
} 
Сценарий сборки

проекта:

ext.deps = [ 
    kotlin    : "org.jetbrains.kotlin:kotlin-stdlib:$ver.kotlin", 
    kotlinTest   : "org.jetbrains.kotlin:kotlin-test:$ver.kotlin", 
    kotlinTestJunit  : "org.jetbrains.kotlin:kotlin-test-junit:$ver.kotlin" 
] 

Я использую версию 1.0.5-2 Котлин.

У нас есть пользовательский тестовый бегун как testInstrumentationRunner, который регистрирует некоторые ресурсы на холостом ходу и некоторый захват активности для разблокировки экрана устройства и получения блокировки слежения и использует TestButler для отключения анимации и стабилизации тестов. Тем не менее, тесты аннотируются с помощью Espresso jUnit 4 runner (@RunWith(AndroidJUnit4::class)). Но тот факт, что Android Studio запускает тесты без каких-либо проблем, сбивает с толку.

ответ

1

Задача компиляции теста kotlin должна запускаться после правильной работы соответствующей задачи сборки для ссылок на классы.

Для assembleDebugAndroidTest удостоверьтесь, что assembleDebug запускается первым.

из командной строки, порядок задач можно быстро проверить с Gradle «dry run» как так:

./gradlew assembleDebugAndroidTest -m 

assembleDebug Если не в правильном порядке. Вы можете исправить заказ, добавив в свой файл сборки следующее:

afterEvaluate { 
    compileDebugAndroidTestKotlin.dependsOn assembleDebug 
} 

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

  • Нет связанных вопросов^_^