从今天开始,我正在寻找解决问题的方法,这就是我提交该问题的原因。
我使用Espresso来运行Android测试。一切都适用于Lollipop和更高版本,但不适用于较旧的Android版本(从该项目的目标API 16到第一个工作版本的API 21)。
我的问题是,用于测试的文件是Android Lollipop和更高版本的/androidTest
文件夹中的文件,但对于较旧的版本,它使用的是默认的“模拟”风格。
例如,我在/ mock和/ androidTest文件夹中都有一个UserManager类,并且我需要测试才能在/ androidTest目录中使用该类。
你知道如何纠正吗?这只会破坏针对Android 4.x的测试,对于较新的版本,预期的行为会发生,所以我真的很失望。
我尝试设置sourceSets,但无法解决我的问题。
我看到multiDex可能会干扰androidTest,所以我尝试了一些对其他人有用的解决方案,但它也无法解决。
如果有人可以提供帮助,我会采取任何建议。
谢谢
Android Studio 3.2.1
摇篮4.6
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "my.app"
minSdkVersion 16
targetSdkVersion 28
versionCode Integer.parseInt(app_version_code)
versionName app_version_name
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
}
dependencies {
testImplementation 'junit:junit:4.12'
testImplementation 'org.json:json:20140107'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
}
答案 0 :(得分:0)
好吧,我终于找到了解决我问题的方法。
感谢this post,我发现这是一个多线程问题。
因此,我在项目中添加了一个proguard规则文件,并在build.gradle中添加了以下几行:
<text>
proguard-multidex-rules.pro的内容:
<tspan>
现在,最后要做的是在检测测试中需要的每个类声明之前添加buildTypes {
debug {
// Other debug settings
multiDexKeepProguard file('proguard-multidex-rules.pro')
}
}
批注。它对我有用,现在用于测试的文件是带注释的(found here)。
问题已解决