Las testings Android Express (escritas en Kotlin) no pueden ver las principales classs y packages

Tengo un problema con las testings Kotlin Espresso. He aplicado el complemento Kotlin-Android Gradle en el script de construcción del module, y las testings se ejecutan sin problemas en Android Studio (la class de testing está anotada y ejecutada por el cornetworkingor AndroidJUnit4 ), pero al ejecutar la tarea de Gradle "assembleDebugAndroidTest" desde el terminal no puedo encontrar principales classs y packages (classs utilizadas en las testings). Lanza un error de Unresolved Reference .

Aquí está la sección sourceSets del script de compilation:

 sourceSets { androidTest { java.srcDir 'src/shanetworkingTestUtils/java' java.srcDir 'src/acceptanceTests/java' java.srcDir 'src/functionalTests/java' java.srcDir 'src/shanetworkingTestUtils/kotlin' java.srcDir 'src/acceptanceTests/kotlin' java.srcDir 'src/functionalTests/kotlin' } acceptanceTests { java.srcDir 'src/shanetworkingTestUtils/java' java.srcDir 'src/shanetworkingTestUtils/kotlin' } // source sets for Kotlin // main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' } 

Y testing las dependencies en el module:

 apply plugin: 'kotlin-android' dependencies { androidTestCompile deps.kotlin androidTestCompile deps.kotlinTest androidTestCompile deps.kotlinTestJunit } 

Script de compilation del proyecto:

 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" ] 

Estoy usando la versión 1.0.5-2 de Kotlin.

Tenemos un cornetworkingor de testing personalizado como testInstrumentationRunner que registra algunos resources inactivos y un gancho de actividad para desbloquear la pantalla del dispositivo y adquirir el locking de activación, y utiliza TestButler para deshabilitar animaciones y estabilizar las testings. Sin embargo, las testings están anotadas con Espresso jUnit 4 runner ( @RunWith(AndroidJUnit4::class) ). Pero el hecho de que Android Studio ejecute las testings sin ningún problema es confuso.

La tarea de compilation de testing de kotlin debe ejecutarse después de la tarea de ensamblaje correspondiente para que las references de class funcionen correctamente.

Para assembleDebugAndroidTest , asegúrese de que assembleDebug se ejecute primero.

Desde la command-line, el order de las tareas se puede verificar rápidamente con gradle " dry run " de esta manera:

 ./gradlew assembleDebugAndroidTest -m 

Si assembleDebug no está en el order correcto. Puede corregir el order agregando lo siguiente a su file de compilation:

 afterEvaluate { compileDebugAndroidTestKotlin.dependsOn assembleDebug } 
  • Kotlin parse Hex String a Long
  • NullPointerException al intentar acceder al campo henetworkingado
  • ¿Cómo acceder a "Activity.this" en Kotlin?
  • Característica Kotlin `typealias`
  • ¿Cómo probar idiomáticamente cadenas no nulas y no vacías en Kotlin?
  • Kotlin: function genérica como tipo de retorno?
  • "+" En Kotlin Coroutines?
  • Compute la propiedad solo una vez
  • En Kotlin, ¿cómo se modifican los contenidos de una list mientras se itera
  • Plantillas que escapan en cadenas multilínea Kotlin
  • Referencia no resuelta para Dagger 2 en Kotlin