Android Espresso测试(用Kotlin编写)看不到主要的类和包
我有一个Kotlin咖啡测试的问题。 我已经在模块的构建脚本中应用了Kotlin-Android
Gradle插件,并且测试在Android Studio中运行时没有问题(测试类由AndroidJUnit4
运行器注释并运行),但是从终端运行Gradle任务“assembleDebugAndroidTest”未能找到我的主要的类和包(测试中使用的类),它引发一个Unresolved Reference
错误。
以下是构建脚本的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" ]
我正在使用Kotlin的1.0.5-2版本。
我们有一个自定义的测试运行器testInstrumentationRunner
,它注册一些空闲资源和一些活动钩子来解锁设备屏幕和获取唤醒锁,并使用TestButler来禁用动画和稳定测试。 然而,测试是用Espresso jUnit 4 runner( @RunWith(AndroidJUnit4::class)
)注释的。 但Android Studio运行测试没有任何问题的事实令人困惑。
kotlin测试编译任务需要在相关的汇编任务之后运行,以使类引用正常工作。
对于assembleDebugAndroidTest
,确保首先运行assembleDebug
。
从命令行,任务的顺序可以用gradle“ dry run ”快速检查,如下所示:
./gradlew assembleDebugAndroidTest -m
如果assembleDebug
的顺序不正确。 您可以通过将以下内容添加到您的构建文件来修复该订单:
afterEvaluate { compileDebugAndroidTestKotlin.dependsOn assembleDebug }
- 在Kotlin Realm Extention中如何解决“功能不属于这个领域的模式的一部分”
- Android关闭键盘
- 在Android工作室Kotlin
- 无法获得SupportMapFragment返回任何东西…似乎总是为空
- Dagger不会为androidTest生成组件
- 使用“kotlin-kapt”插件,Android Studio不提供有关Dagger 2的具体错误
- java.lang.ClassNotFoundException:com.intellij.junit5.JUnit5IdeaTestRunner在kotlin中使用spek
- 在espresso测试中“无法启动活动”
- 根据滑动方向移动视图