Android 测试依赖于库项目中的测试类。

3

我的项目有两个模块:

  • 应用程序(app)
  • 库(library)

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

结构如下:

:library /src/main
            /androidTests

:app     /src/main
            /androidTests

他们在 Android Studio 中编译得很好,但是当我运行测试时会出现以下错误信息:
错误:(6、32)错误:找不到符号类 XXXX 错误:任务执行失败 [...]
编译失败;有关详细信息,请参见编译器错误输出。[...]
任务“':app:compileProductionDebugAndroidTestJavaWithJavac'”执行时,Gradle 似乎无法找到库的测试目录中所在的类。
你有什么想法可以解决这个问题吗?

你正在运行仪器测试还是单元测试? - Muhammad Babar
仪表化。./gradlew :app:connectedAndroidTest - GaRRaPeTa
2个回答

2

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


4
为了进一步阐述,我可以指出我将我的共享类放在另一个库模块的主目录中。这个库模块是用“androidTestCompile”导入的。这样,我避免了测试类被包含在发布的apk中。只有测试构建会包括它们。 - GaRRaPeTa
1
有没有其他解决方案?我有一个包含大约5个应用程序的多种口味库。每个应用程序都有特定的测试,需要来自库的测试代码。将共享代码放入自己的测试库中不起作用,因为它需要来自库的其他类。 - davidgiga1993

-4

我曾经使用过Junit,就像你提到的那样,它位于libs文件夹中。对于您的测试类,您可以尝试以下步骤:

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

2- 转到运行/调试配置 ->默认值 -> Android测试(如果没有,请添加),然后选择“模块中的所有”作为测试选项,并确保Gradle-aware Make添加在配置窗口底部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接