android - 将仪器测试放在功能模块中
问题描述
我有一个带有应用程序模块和功能/库模块的多模块架构。目前,app 模块中有一些功能检测测试。我想移动用于测试androidTest
文件夹下相应功能模块中特定功能的仪器测试。经过一些试验和错误,这是状态:
- 在 app 模块 gradle 的文件中添加
androidTest {
java.srcDirs += [
"${project(':feature').projectDir}/src/androidTest/kotlin"
]
assets.srcDirs = [
"${project(':feature').projectDir}/src/androidTest/assets/",
]
}
创建了一个“基础测试”模块,其中基础测试类(BaseActivity 和 BaseUiTest)
在应用程序和功能 gradle 文件中添加
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
- 在应用模块的 androidTest AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx">
<application
android:theme="@android:style/Theme.Light"
android:name=".App"
android:label="Test app">
</application>
</manifest>
当我从 android studio 界面运行测试时,测试成功。但是,当从命令行 ( ./gradlew :feature:connectedAndroidTest
) 运行测试时,由于应用程序在运行时崩溃(由于 koin 模块未初始化 - 它们所在的位置),测试失败CustomApplication's onCreate
!
更奇怪的是,如果我将功能模块的 androidTest 文件夹移动到它自己的模块中(例如,依赖于功能模块的功能测试模块)它可以工作!
是否有任何标准化的方法可以在多模块设置中的每个功能模块中放置仪器测试?为什么从 android studio 成功运行测试但不能从命令行运行?
解决方案
推荐阅读
- git - 关闭第一个 PR,因为派生分支也有变化
- python - 如何在 python 环境中使用 Fonttools 的 pyftsubset,而不是从命令行
- java - 单击按钮更改图像
- python - 在numpy中正向和反向位扫描
- python-3.x - 是否可以在 Python 3x 中打印一个使用星号的空心盒子
- swift - 后台队列上的同步阻塞方法在主线程上执行
- sql - 如何计算开始日期和结束日期并以下一个开始日期开始每一行
- vba - Word 中的 VBA:CopyAsPicture 方法会忽略文本大小以及某些字体
- javascript - 为什么我的 JS 函数不能与我的按钮一起使用?
- json - 从给定键数组的对象流中选择