我有一些带有自定义测试运行程序的Android工具测试,这些测试看起来都很好,直到我升级到AndroidStudio2.1之后,突然出现了一些库版本,并随着时间的推移做了一些其他事情。现在,我的测试不再使用已经在StackOverflow上被询问了一百万次的可怕的StackOverflow。
经过进一步的研究,似乎Android根本没有编译我的测试代码,这意味着它的代码从未包括在内,因此它无法为测试运行程序找到ComponentInfo。我通过在测试代码中添加编译错误来验证这一点,这不会在我尝试运行测试时引起任何问题。
此外,在语法高亮器中,测试代码似乎被视为非测试代码?例如,测试运行程序导入android.support.test.runner.AndroidJUnitRunner
,但是runner
以红色高亮显示,就好像缺少了这个库一样(但它在gradle文件中是androidTestCompile
)。如果我将其更改为compile
,语法高亮符就会很高兴。但是,测试代码以黄色显示在项目视图中,就像测试代码一样。
我不知道是什么决定了Android为测试所编译的内容。设置很简单。我的文件层次结构是
app
+--src
+ +--main
+ | +--java
+ | +--com/package/files
+ |
+ +--androidTest
+ +--java
+ +--com/package/files
换句话说,有app/src/main/java/com/.和app/src/androidTest/java/com.主应用程序和测试都使用相同的包。
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
。我试过很多次打扫/重建。
发布于 2016-05-09 20:59:41
这个答案太令人尴尬了,我不应该把它发出去。
我所有模块的“构建变体”都被设置为“版本”,所以没有编译任何测试内容。将其设置为"Debug“可以解决问题。如果Android对此更直截了当,就像警告在使用版本碎片时运行测试一样,那就更好了。
https://stackoverflow.com/questions/37127450
复制相似问题