运行Junit测试用例android

时间:2016-01-30 16:57:21

标签: android spring rest ssl junit

我尝试运行这个简单的JUnit测试用例,测试Spring REST for android的功能,基本的例子是从spring网页复制和过去:

public class ExampleUnitTest {

    @Test
    public void addition_isCorrect() throws Exception {

    // The connection URL
    String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q={query}";

    // Create a new RestTemplate instance
    RestTemplate restTemplate = new RestTemplate();

    // Add the String message converter
    restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

    // Make the HTTP GET request, marshaling the response to a String
    String result = restTemplate.getForObject(url, String.class, "Android");
   }
}

但是在运行时我收到以下异常:

java.lang.IllegalArgumentException: SSL socket factory may not be null
at org.apache.http.util.Args.notNull(Args.java:54)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(SSLConnectionSocketFactory.java:223)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:714)
at org.apache.http.impl.client.HttpClients.createSystem(HttpClients.java:66)
at org.springframework.http.client.HttpComponentsClientHttpRequestFactory.<init>(HttpComponentsClientHttpRequestFactory.java:74)
at org.springframework.http.client.support.HttpAccessor.<init>(HttpAccessor.java:62)
at org.springframework.http.client.support.InterceptingHttpAccessor.<init>(InterceptingHttpAccessor.java:36)
at org.springframework.web.client.RestTemplate.<init>(RestTemplate.java:156)
at eu.vinmasterpiece.carburantimise.ExampleUnitTest.addition_isCorrect(ExampleUnitTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

如果我直接在Android设备上调用上一个代码,它可以正常工作。 可能是什么问题?

我的Gradle配置是:

apply plugin: 'com.android.library'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        debuggable true
    }
}
lintOptions {
    abortOnError false
}
packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}
testOptions {
    unitTests.returnDefaultValues = true
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'org.springframework.android:spring-android-rest-template:2.0.0.M3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.0'
testCompile 'org.springframework.android:spring-android-rest-template:2.0.0.M3'
testCompile 'com.fasterxml.jackson.core:jackson-databind:2.7.0'
testCompile 'org.apache.httpcomponents:httpclient:4.5.1'
testCompile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

}

0 个答案:

没有答案