首页 > 解决方案 > 仅用于 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)?

标签: androidkotlinandroid-testing

解决方案


推荐阅读