首页 > 解决方案 > 将仪器测试放在功能模块中

问题描述

我有一个带有应用程序模块和功能/库模块的多模块架构。目前,app 模块中有一些功能检测测试。我想移动用于测试androidTest文件夹下相应功能模块中特定功能的仪器测试。经过一些试验和错误,这是状态:

  1. 在 app 模块 gradle 的文件中添加
        androidTest {

            java.srcDirs += [
                    "${project(':feature').projectDir}/src/androidTest/kotlin"
            ]
            assets.srcDirs = [
                    "${project(':feature').projectDir}/src/androidTest/assets/",
            ]
        }
  1. 创建了一个“基础测试”模块,其中基础测试类(BaseActivity 和 BaseUiTest)

  2. 在应用程序和功能 gradle 文件中添加

    defaultConfig {
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
  1. 在应用模块的 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 成功运行测试但不能从命令行运行?

标签: androidandroid-studiogradlemulti-moduleandroid-instrumentation

解决方案


推荐阅读