在mockito中创建OkHttpClient时如何解决java.lang.AssertionError



我正在尝试做出一些固定的网络响应。我有实际请求的json响应,我有序列化响应的改装接口。我非常沮丧地试图设置这个。我应该在这里做什么?我的选择似乎是:1)使用MockWebServer()2)使用RequestInterceptor()。

在尝试使用1或2时,我无法在有生之年实例化一个OkHttpClient()而不失败,基本上这会让我尝试的每一件事都立即死亡。我得到一个java.lang.AssertionError,因为OkHttpClient在找不到TLS算法时抛出了这个错误。

 if (builder.sslSocketFactory != null || !isTLS) {
      this.sslSocketFactory = builder.sslSocketFactory;
    } else {
      try {
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, null, null);
        this.sslSocketFactory = sslContext.getSocketFactory();
      } catch (GeneralSecurityException e) {
        **throw new AssertionError(); // The system has no TLS. Just give up.**
      }
    }

我曾尝试使用unMock将"javax.net.ssl"类保留在android.jar中,但这并没有解决错误。

unMock {
    // URI to download the android-all.jar from. e.g. https://oss.sonatype.org/content/groups/public/org/robolectric/android-all/
    downloadFrom 'https://oss.sonatype.org/content/groups/public/org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar'
    keep "android.util.Log"
    keep "javax.net.ssl"
}

因此,基本上,我已经遇到了各种各样的例子,如何用改装2模拟网络请求,但我无法通过这个障碍,我感到非常沮丧。我还没有见过其他人有这个问题,我很困惑每个人是如何在所有测试中轻松地实例化新的OkHttpClients的。

以下是我正在使用的相关依赖项。

    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-all:1.10.19'
    testCompile 'org.powermock:powermock-mockito-release-full:1.6.4'
    testCompile 'org.powermock:powermock-module-junit4:1.6.4'
    testCompile 'org.easymock:easymock:3.4'
    testCompile 'org.powermock:powermock-api-easymock:1.6.4'
    testCompile 'com.squareup.okhttp3:mockwebserver:3.2.0'
    compile 'com.squareup.retrofit2:retrofit:2.0.0'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
    compile 'com.google.code.gson:gson:2.4'

您需要在类的顶部添加此注释。当然

@PowerMockIgnore("javax.net.ssl.*")

相关内容

  • 没有找到相关文章

最新更新