【问题标题】:gradle connectedAndroidTest returns "No test found", however adb shell am instrument can find the testsgradle connectedAndroidTest 返回“未找到测试”,但是 adb shell am instrument 可以找到测试
【发布时间】:2015-03-14 15:22:52
【问题描述】:

我们有一个库项目,多个应用程序都依赖于它。单元测试在库项目中。 我们能够在 Android Studio 中运行依赖项目的测试,但是

./gradlew :[DependentProject]:connectedAndroidTest 

总是返回“未找到测试,无事可做”。

通过观察,我在Android Studio中发现,似乎只执行gradle任务:

:[DependentProject]:assembleDebug, :[DependentProject]assembleDebugTest

然后使用 adb 安装目标和测试 apk,并使用 adb shell am 仪器运行测试。

由于connectedAndroidTest依赖于这两个任务,我安装了target并测试了它产生的apk,并手动调用了instrument命令,测试就开始了。

adb shell am instrument -w com.package.test/android.test.InstrumentationTestRunner

那么问题来了,connectedAndroidTest在哪里寻找测试,为什么找不到测试而adb Instrument可以?如何解决这个问题?

【问题讨论】:

  • 当我收到未找到测试错误时,通常拔下并重新插入设备会修复它。 (蹩脚,但这正是我所观察到的)
  • 另外,我们使用“gradle connectedCheck”命令为我们的多库项目运行所有构建
  • 您能发布您的 Gradle 构建配置吗?你有一个块来定义你的测试和java在哪里吗? : sourceSets { main {....} androidTest {.....} }
  • 您是否为仪器测试启用了 proguard?

标签: android gradle android-studio android-gradle-plugin android-testing


【解决方案1】:

我有同样的问题,我通过添加一个以“test”开头的方法来解决它

@Test
public void testWTF() throws Exception {
    assertTrue(true);
}

所有其他带有@Test 注释的方法也可以工作!

惊人的不?我在这里找到了答案:No tests found with test runner 'JUnit 4'

【讨论】:

  • 我记得我们的测试确实不是以“test”开头的,所以这可能是原因,但是我不再可以访问代码.....我认为是 junit4 @Test 注释应该足够了,但似乎还不够。谢谢。
  • 不过,在我的情况下,我不确定为什么这些测试可以通过“adb shell am instrument”来定位,这可能在一段时间内仍然是个谜......
猜你喜欢
  • 2015-01-16
  • 1970-01-01
  • 2017-12-24
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
相关资源
最近更新 更多