无法解析Android JUnit测试运行器

时间:2016-06-29 14:06:49

标签: android junit android-instrumentation

我正在尝试为我们的项目添加一个检测测试,但似乎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的缓存(包括项目和全局),一切都没有运气。有谁知道发生了什么事?

2 个答案:

答案 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,如果这对您来说是可行的选项。