如何在应用程序以及库模块上使用AndroidX运行检测测试?

时间:2019-01-03 10:19:34

标签: android unit-testing android-espresso androidx android-instrumentation

我有一个包含2个模块的android项目。

  1. Android库模块
  2. 用于库的Android演示应用模块

我已经设置了必需的测试依赖项,两个项目的Gradle配置相同。

当我从演示应用程序运行测试时,它运行没有任何问题。 但是,当从库模块运行相同的示例测试代码时,它将无法找到测试。

这是我可以从android studio的“运行”标签中看到的日志。

  

演示模块测试-结果

$ adb shell CLASSPATH=$(pm path androidx.test.services) app_process / androidx.test.services.shellexecutor.ShellMain am instrument -r -w -e targetInstrumentation com.cardstream.paymentdemo.test/androidx.test.runner.AndroidJUnitRunner   -e debug false -e class 'com.cardstream.paymentdemo.ExampleInstrumentedTest' androidx.test.orchestrator/androidx.test.orchestrator.AndroidTestOrchestrator
Client not ready yet..
Started running tests
Tests ran to completion.
  

库模块测试-结果

$ adb shell CLASSPATH=$(pm path android.support.test.services) app_process / android.support.test.services.shellexecutor.ShellMain am instrument -r -w -e targetInstrumentation com.cardstream.payment.test/androidx.test.runner.AndroidJUnitRunner   -e debug false -e class 'com.cardstream.payment.ExampleInstrumentedTest' android.support.test.orchestrator/android.support.test.orchestrator.AndroidTestOrchestrator
Client not ready yet..
Started running tests
Test running failed: No test results
Empty test suite.

从上面的日志中,我可以看到两个模块使用的测试服务的区别。

  

演示模块-androidx.test.services

     

库模块-android.support.test.services

从以上观察结果中,我试图将它们隐瞒为相似的行为,但是不幸的是,我无法找到任何准确有效的答案或选择。

两个模块的Instrumentation Runner配置

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

两个模块的测试依赖都很少

testImplementation 'junit:junit:4.12'
testImplementation 'org.robolectric:robolectric:4.1'

androidTestImplementation 'androidx.test:core:1.1.0'
androidTestImplementation 'androidx.test:core-ktx:1.1.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestUtil 'androidx.test:orchestrator:1.1.1'

我已经使用库模块创建了一个新项目并运行测试,它对于两个模块(带有支持库)都可以正常工作。

我已经使用AndroidX迁移了新创建的项目,然后在这两个模块上都可以正常工作。

因此,我感到困惑,并且目前无法解决这种情况的解决方案。如果有人有任何线索/建议/答案,我期待您的帮助?

0 个答案:

没有答案