我有一些自定义测试运行器的Android测试测试程序,在我升级到Android Studio 2.1之后的某些时候似乎都运行良好,一些库版本增加,并且随着时间的推移做了一些其他事情。现在,我的测试已经不再使用已经被问过StackOverflow一百万次的可怕Unable to find instrumentation info for: ComponentInfo{}
。
经过进一步调查,似乎Android Studio根本无法编译我的测试代码,这意味着它的代码永远不会包含在内,因此无法为测试运行器找到ComponentInfo。我通过在测试代码中添加编译错误来验证,当我尝试运行测试时,这不会导致任何问题。
此外,测试代码似乎被视为语法高亮显示中的非测试代码?例如,测试运行器导入android.support.test.runner.AndroidJUnitRunner
,但runner
以红色突出显示,就像缺少该库一样(但它在gradle文件中为androidTestCompile
)。如果我将其更改为compile
,则语法高亮显示很高兴。但是,测试代码以黄色显示在项目视图中,就像测试代码一样。
我不确定Android Studio为测试编译的内容。设置很简单。我的文件层次结构是
app
+--src
+ +--main
+ | +--java
+ | +--com/package/files
+ |
+ +--androidTest
+ +--java
+ +--com/package/files
换句话说,有app / src / main / java / com / ...和app / src / androidTest / java / com ....主app和测试都使用相同的包
build.gradle(相关部分):
apply plugin: 'com.android.application'
android {
compileSdkVersion 'Google Inc.:Google APIs:23'
buildToolsVersion '24.0.0 rc3'
defaultConfig {
multiDexEnabled = true
applicationId 'com.package'
minSdkVersion 10
targetSdkVersion 23
versionCode 2
versionName '0.8a'
signingConfig signingConfigs.release
testInstrumentationRunner 'com.package.TestRunner'
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
productFlavors {
}
dexOptions {
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
checkReleaseBuilds true
abortOnError true
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'com.android.support:support-annotations:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
[...]
}
apply plugin: 'com.google.gms.google-services'
测试的运行/调试配置也很简单 - 它是Android测试,仪表运行器是com.package.TestRunner
。我多次尝试清洁/重建。
答案 0 :(得分:4)
答案是如此令人尴尬,以至于我不应该发布它。
"构建变体"因为我的所有模块都被设置为" Release"所以没有编译任何测试内容。将其设置为" Debug"照顾好了这个问题。如果Android Studio对它有更多的声音会更好,比如警告在使用发布分片时运行测试。