【问题标题】:Android tests depends on test classes on a library projectAndroid 测试依赖于库项目中的测试类
【发布时间】:2015-12-01 12:29:47
【问题描述】:

所以我的项目有两个模块:

  • 应用程序
  • 图书馆

在应用程序的addroidTest 目录中,我有一些类依赖于库的addroidTest 目录中的类。

结构是:

:library /src/main
            /androidTests

:app     /src/main
            /androidTests

它们在 Android Studio 中编译得很好,但是当我运行测试时我得到:

错误:(6, 32) 错误:找不到符号类 XXXX 错误:执行 任务失败 [...]

编译失败;有关详细信息,请参阅编译器错误输出。

[....]

任务执行失败 > ':app:compileProductionDebugAndroidTestJavaWithJavac'。

似乎当 gradle 执行任务 ':app:compileProductionDebugAndroidTestJavaWithJavac' 时,它在库的测试目录中找不到类。

知道如何解决这个问题吗?

【问题讨论】:

  • 你在运行 Instrumentation 还是单元测试?
  • 仪表。 ./gradlew :app:connectedAndroidTest

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


【解决方案1】:

test 源集不会添加到输出的jar,因此当appandroidTest 中查找library 代码时不存在。您可以将共享类放在主库代码中,并从您的app 那里引用它,但我认为您不可能依赖|扩展另一个模块的测试类。

【讨论】:

  • 为了进一步扩展答案,我可能会指出我将共享类放在另一个库模块的主目录中。这个库模块是用“androidTestCompile”导入的。这样我就避免了将测试类包含在已发布的 apk 中。只有测试版本会包含它们。
  • 还有其他解决方案吗?我有一个包含大约 5 个应用程序的多风格库。每个应用程序都有特定的测试,需要来自 lib 的测试代码。将共享代码放入它自己的测试库中是行不通的,因为它需要库中的其他类。
【解决方案2】:

我曾与 Junit 合作过,它位于您提到的 libs 文件夹中。对于您的测试课程,您可以尝试以下步骤:

1- 在 androidTest 文件夹中,确保将测试类放在这样的路径中:androidTest -> java -> com.examples.bla(与项目相同)->测试类。

2- 转到运行/调试配置 -> 默认值 -> Android 测试(如果不存在则添加它),然后为测试选项选择“All in Module”,并确保将 Gradle-aware Make 添加到配置窗口的底部。

【讨论】:

    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2018-06-24
    • 2015-04-29
    • 2016-01-20
    • 2016-02-06
    • 2014-10-20
    相关资源
    最近更新 更多