android - 如何在多模块应用程序单元测试中启动应用程序模块
问题描述
我正在尝试运行 UI 测试,当单击按钮时应该打开另一个活动,但该活动在另一个模块中,我使用意图过滤器操作打开它,我想对其运行 UI 测试的模块不知道关于其他模块的任何内容,因此当 espresso 单击按钮ActivityNotFoundException
时将被抛出,但如果我在没有单元测试的情况下运行项目,它将不会发生,因为 app 模块实现了这两个模块。
我的应用程序模块的 Gradle 项目结构:
dependencies {
implementation project(":login")
implementation project(":main")
}
登录模块
dependencies {
implementation project(':core')
}
主模块
dependencies {
implementation project(':core')
}
main 和 login 对彼此一无所知,当我从 login 活动开始主要活动时,我通过意图操作启动它:
startActivity(Intent("com.example.Main"))
这是主模块的清单文件
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="com.example.Main" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
因为 app 模块实现了这两个模块,所以它可以毫无问题地运行,但是在启动 UI 测试时它会崩溃,ActivityNotFoundException
因为如果我从子模块运行测试,app 模块将不会启动。
我试图将主模块添加到登录模块
dependencies {
implementation project(':core')
implementation project(':main')
}
但是,如果我在打开的主模块按钮LoginActivity
和登录模块中有另一个按钮可以打开MainActivity
我不能做这样的事情
主要的:
dependencies {
implementation project(':core')
implementation project(':login')
}
登录:
dependencies {
implementation project(':core')
implementation project(':main')
}
这将是循环依赖
解决方案
推荐阅读
- python - 是否可以缩进没有特殊语法含义的块?
- c# - 正在返回一个列表
从 c# 中分配内存的属性 - python - 我的程序在检测单词中的特定字母时遇到问题
- python - 如何在python中执行能够在文本文件中显示前10个关键字的程序
- reactjs - React Hooks:获取数据后初始化本地状态
- oracle - 将大型 SQL 表转储为 .csv 并将其拆分为多个单独的 CSV 用于 Redshift
- python - 将 3D 数组重塑为 2D 数组以生成 DataFrame:跟踪索引以生成列名
- matlab - 将向量拆分为预定义大小的组
- npm - inso cli安装失败
- shell - 如何使用 sed 命令用特殊字符 (',') 替换新行