android - 仅用于 androidTest 的实际类型别名
问题描述
我需要运行一些仪器测试(androidTest),主要是因为我需要测试AndroidOpenSSL
提供程序,但同时我需要模拟 Android HW 相关的 API,这些 API 是最终的。
虽然有对 Final Classes 的 Mockito 支持,但它似乎有很多限制。
到目前为止我发现的最合理的方法是使用 kotlinexpect / actual typealias
在发布/调试下使用平台 API,并在构建类型下使用我的自定义类仅用于测试。
我在 build.gradle 上添加以下内容:
buildTypes {
...
create("platformMock") {
initWith(getByName("debug"))
}
}
testBuildType "platformMock"
我的源代码结构如下:
src
├── androidTest
│ └── java
│ └── com
│ └── example
│ └── learn
│ └── StuffTest.kt
├── main
│ └── java
│ └── com
│ └── example
│ └── learn
│ ├── MainActivity.kt
│ └── Stuff.kt
├── debug
│ └── java
│ └── com
│ └── example
│ └── learn
│ └── Platform.kt
├── platformMock
│ └── java
│ └── com
│ └── example
│ └── learn
│ └── Platform.kt
└── release
└── java
└── com
└── example
└── learn
└── Platform.kt
现在主要的不便是我必须维护这个 platformMock 构建类型,选择它进行测试,并且复制 Platform.kt 以进行发布/调试。
有什么更简单的方法来覆盖expect / actual typealias
仅用于检测的测试(androidTest)?
解决方案
推荐阅读
- android - 连接错误:io.socket.engineio.client.EngineIOException: xhr poll error
- php - 当我尝试更新行的一个字段时,为什么所有其他字段都会被删除?
- node.js - 无法使用 Socket.io 启动 NodeJS 服务器
- r - 将 ggplot2 stat_function 添加到现有图表
- vue.js - 为什么 Vuejs 禁用了媒体查询添加和删除组件的能力
- java - 令人困惑的 Zookeeper 内存使用情况
- checkstyle - 如何捕捉个人或组织编程的最佳实践?
- python - 据说在 Python 3 中的 input() 上的 SyntaxError
- php - 循环从青铜开始的关卡
- swift - 定时器的函数在失效后被调用