我正在使用
Robolectric 4.3.1
(testImplementation "org.robolectric:robolectric:4.3.1"
)为我的集成测试创建一个Android sqlite环境。我的系统使用OkHttp
(implementation 'com.squareup.okhttp3:okhttp:3.14.7'
)进行真实的HTTP请求,而不是使用MockWebServer
。在升级到Android 10 SDK之后,我必须按照Robolectric的说明将单元测试JVM升级到JDK 9,如下:
运行Android API 29上的测试现在严格要求Java9或更高版本的运行时。如果在通过Android Studio运行API 29时出现有关不支持的Java版本的错误,则可以使用“运行配置”对话框中的“JRE”字段来配置更新的Java运行时。有关更多背景信息,请参见https://developer.android.com/studio/run/rundebugconfig。
然而,现在我的集成测试失败了,显示如下:
java.lang.NullPointerException: No password supplied for PKCS#12 KeyStore.
at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(Unknown Source)
at java.base/java.security.KeyStore.load(KeyStore.java:1479)
at java.base/sun.security.ssl.TrustStoreManager$TrustAnchorManager.loadKeyStore(TrustStoreManager.java:367)
at java.base/sun.security.ssl.TrustStoreManager$TrustAnchorManager.getTrustedCerts(TrustStoreManager.java:315)
at java.base/sun.security.ssl.TrustStoreManager.getTrustedCerts(TrustStoreManager.java:59)
at java.base/sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:51)
at java.base/javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:278)
at okhttp3.internal.Util.platformTrustManager(Util.java:640)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:228)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:202)
如何再次进行真正的HTTP调用?
org.gradle.jvmargs=-Xms4g -Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStoreType=JKS
- bsautner