Cod*_*ice 42 testing android android-uiautomator
是否可以minSdkVersion为测试设置不同于应用程序本身?我问,因为我想使用新的测试支持库和UI Automator进行测试.但是,这仅适用于API 18+.与此同时,我仍然希望支持旧版Android,尽管没有经过全面测试.build.gradle为了做到这一点,我需要添加到我的文件中?
为了澄清,我使用Android Studio和"新的"基于Gradle的项目结构.
the*_*ang 68
我从谷歌的新测试模板中得到了这个.
AndroidManifest.xml在您的test或androidTest文件夹中创建一个新文件.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:tools="http://schemas.android.com/tools"
package="your.package.name">
<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我已经上传了一个mauricegavin/android-testing解决方案的例子,因为我自己找不到工作的.
感兴趣的模块是ui/uiautomator/BasicSample/app.您会注意到androidTests目录中有一个AndroidManifest.xml.将minSdkVersion你在指定app/build.gradle仍将被用于debug和release构建.
你会看到,minSdkVersion在样本项目的build.gradle指定api 17其不受uiautomator支持,通常会导致生成失败.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:tools="http://schemas.android.com/tools"
package="com.example.android.testing.uiautomator.BasicSample" >
<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
感谢mattblang的回答,我用这个例子.
试试这个.
defaultConfig {
applicationId "com.test"
if (gradle.startParameter.taskNames.contains(":app:assembleDebug")) {
minSdkVersion 21
}else{
minSdkVersion 14
}
targetSdkVersion 22
versionCode Integer.parseInt(VERSION_CODE)
versionName VERSION_NAME
}
Run Code Online (Sandbox Code Playgroud)
我遇到了以下冲突,为了测试,我需要更高的 minSdkVersion。
我找到的解决方案来自以下文档,使用 buildType更改测试构建类型,它为我完成了这项工作
以下是解决方案:
android {
defaultConfig {
applicationId "com.doronkettner.ilikemovies"
...
minSdkVersion 18
...
testBuildType "staging"
...
}
...
buildTypes {
release {...}
debug {...}
staging {
initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
defaultConfig.minSdkVersion 19
}
}
Run Code Online (Sandbox Code Playgroud)
将 buildType 改为 stage 应该就可以了
使用androidx,您可以通过以下工具强制使用版本低于18的UI自动器:overrideLibrary =“ android_libs.ub_uiautomator”
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:tools="http://schemas.android.com/tools" package="..." >
<uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
但是,如果您在版本<18上运行测试,可能会导致运行时失败
当您运行 androidTest 时,最后会包含一个任务"AndroidTest"。这就是我根据这种模式过滤我的任务的原因。
我的任务名称是 - :app:assembleMyFlavourDebugAndroidTest。
defaultConfig {
gradle.startParameter.taskNames.each {
if (it.contains("AndroidTest")) {
minSdkVersion 18
} else {
minSdkVersion 16
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11106 次 |
| 最近记录: |