在Robolectric测试中使用Android KeyStore

时间:2016-07-05 22:18:29

标签: java android robolectric android-keystore

我正在尝试编写一些针对Android Keystore的测试用例。但是,当我编写以下测试用例时:

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class FancyPantsUnitTest {
   @Test
   public void buildKey() {
        keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
        keyPairGenerator.initialize(4096);
        final KeyPair keyPair = keyPairGenerator.generateKeyPair();
   }
}

此操作失败,但出现以下异常:

org.junit.ComparisonFailure: expected:<null> but was:<java.security.KeyStoreException: AndroidKeyStore not found>

如果有帮助,我的目标是API级别 23

1 个答案:

答案 0 :(得分:6)

https://github.com/robolectric/robolectric/issues/1518已经就此进行了讨论。

简而言之:

  

来自java.security.Security javadoc:

     
    

从a中读取安全属性的默认值     特定于实现的位置,通常是属性     Java安装目录中的文件lib / security / java.security。

  
     

......我们可能不想鼓励人们瞎逛。

     

看起来这需要是方法拦截规则...

尝试使用PowerMockito时会发生同样的情况。