Robolectric给出了java.security.KeyStoreException:找不到AndroidKeyStore

时间:2017-08-03 17:58:20

标签: java android keystore robolectric

所以我编写了我的应用程序,我使用KeyStore来加密/解密数据。 我也为它编写了一个很好的Robolectric测试,但是当我尝试运行测试时,我得到了以下异常:

java.security.KeyStoreException: AndroidKeyStore not found

代码如下:

keyStoreInstance = KeyStore.getInstance("AndroidKeyStore");

对此有何解决方案?

我发现的只有: https://github.com/robolectric/robolectric/issues/1518

1 个答案:

答案 0 :(得分:2)

所以,当你通过Robolectric运行时,背后的原因是AndroidKeyStore实现不存在。 Using the Android KeyStore in Robolectric tests

您可以使用以下方法来避免此异常:

isTestRunner(){
    return Build.FINGERPRINT.equalsIgnoreCase("robolectric");
}

如果你有一个类让我们说 YourKeystore.class 注入了许多其他类,你仍然可以模拟你的YourKeystore.class,这使你能够测试其他类。 如果您想测试YourKeystore.class本身,我担心这是不可能的(参见上面的链接)。