2016-07-05 4 views
4

Я пытаюсь написать несколько тестовых тегов, которые работают против Android Keystore. Однако, когда я пишу следующий тестовый случай:Использование Android KeyStore в тестах Robolectric

@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, если это помогает.

ответ

5

Об этом уже говорилось по адресу https://github.com/robolectric/robolectric/issues/1518.

Короче:

От java.security.Security Javadoc:

Значения по умолчанию свойств безопасности считывается из реализации конкретного места, которое обычно свойство файла lib/security/java.security в каталоге установки Java.

... который мы, вероятно, не хотим поощрять людей к обезьяне.

Похоже, это нужно будет быть перехватывать правило метод ...

То же самое происходит при попытке PowerMockito.

+0

Спасибо за эту детективную работу @ marius-bardan. – jackyalcine

Смежные вопросы