我试图验证与WebView控件交互的代码是否正确将Javascript调用传递给WebView,但是我的单元测试未正确执行。似乎测试是针对错误版本的Android运行的。
我的测试:
@Test
public void testJavascript() {
// myObj will pass its argument as a string to a WebView control referenced in the
// test as mWebView
myObj.callJavascript("some code"); // passes to a WebView control
// Using Mockito to verify calls to mocked WebView
verify(mWebView).evaluateJavascript(anyString(), any(ValueCallback.class));
}
我的目标系统是Android 4.4,并使用Gradle构建系统。我是Gradle的新手,可能正在搞砸。据我所知,Maven Central尚未安装Android 4.4,因此我正在使用Android Studio安装中的本地.jar文件。
从build.gradle:
android {
compileSdkVersion 19
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
}
sourceSets {
unitTest {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/res')
}
}
configurations {
unitTestCompile.extendsFrom runTime
unitTestRuntime.extendsFrom unitTestCompile
}
dependencies {
unitTestCompile files("$project.buildDir/classes/release")
unitTestCompile 'junit:junit:4.11'
unitTestCompile 'org.robolectric:robolectric:2.2'
unitTestCompile 'org.mockito:mockito-core:1.9.5'
unitTestCompile files('../libs/android-19.jar') // From Android Studio
}
task unitTest(type:Test, dependsOn:assemble) {
testClassesDir = project.sourceSets.unitTest.output.classesDir
classpath = project.sourceSets.unitTest.runtimeClasspath
}
check.dependsOn unitTest
tasks.withType(Test) {
scanForTestClasses = false
include "**/*Tests.class"
}
当我尝试通过
gradle unitTest
运行测试时,出现了我无法理解的错误:com.example.Tests > testCallJavascript FAILED
java.lang.NoSuchMethodError: android.webkit.WebView.evaluateJavascript(Ljava/lang/String;Landroid/webkit/ValueCallback;)V
at com.exampleTests.testCallJavascript(Tests.java:...)
更新:
好的,在添加调试println以检查测试所针对的SDK版本之后,看起来它们正在针对APILEVEL 14(不支持WebView.evaluateJavascript())运行。据我所知,我从未将这个项目配置为以APILEVEL 14为目标。我应该在哪里找出配置错误的想法?谢谢!
最佳答案
Robolectric尚不支持API-19。如果使用了无效的API目标,Robolectric默认为API-14。
另请:https://groups.google.com/forum/#!msg/robolectric/LBOgSkD5O9U/qooiA_xDv_4J
关于android - 为什么我的单元测试针对的是错误版本的Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507121/