我正在尝试为我们的项目添加一个检测测试,但似乎Gradle没有正确地将Android JUnit Test Runner添加到项目的类路径中。我的gradle构建文件的测试依赖性如下所示:
<script>
// Get the modal
var modal = document.getElementById('myModal');
var modal2 = document.getElementById('myModal2');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
var btn2 = document.getElementById("myBtn2");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
btn2.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
</script>
我们使用的是最新版本的支持库(24.0.0),但当前版本的测试运行器(JUnit runner)和Espresso使用的是版本23.1.0。为了解决版本冲突,我强制跑步者(和Espresso)使用更新的版本(我理解其含义,但我们不能使用旧版本):
testCompile 'junit:junit:4.12'
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
和
androidTestCompile 'com.android.support:support-v4:24.0.0'
androidTestCompile 'com.android.support:appcompat-v7:24.0.0'
androidTestCompile 'com.android.support:support-v13:24.0.0'
androidTestCompile 'com.android.support:recyclerview-v7:24.0.0'
androidTestCompile 'com.android.support:design:24.0.0'
androidTestCompile 'com.android.support:support-annotations:24.0.0'
但是,出于某种原因,Gradle不会添加configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:24.0.0'
}
}
包(在android.support.test下)。所以
runner
引发错误:import android.support.test.runner.AndroidJUnit4;
。已经清除了Android Studio的缓存,重新启动了IDE,清除了Gradle的缓存(包括项目和全局),一切都没有运气。有谁知道发生了什么事?
答案 0 :(得分:2)
尝试添加:
androidTestCompile 'com.android.support.test:rules:0.5'
答案 1 :(得分:1)
这是我的老问题,但认为这可能有助于解释问题和解决方案。问题在于调试版本变体的名称:如果您将调试版本变体命名为debug
,请确保通过将testBuildType "yourDebugBuildVariantName"
添加到build.gradle
脚本来通知Android的Gradle插件(您的应用模块的build.gradle
而不是android{}
部分中的项目全局),或者将调试版本变体重命名为debug
。如果您有多个调试版本变体,则需要指定其中一个要运行测试的版本,例如:testBuildType armDebug
:
apply plugin: 'com.android.application'
...
android {
testBuildType "myDebug" <-
compileOptions { ... }
sourceSets { ... }
signingConfigs { ... }
}
即使使用此显式配置,Gradle偶尔也会出现运行检测测试的问题。解决此问题的最佳方法是将调试版本变体(运行测试的版本)重命名为debug
,如果这对您来说是可行的选项。