2016-07-05 15 views
4

Ich versuche, ein paar Testfälle zu schreiben, die gegen die Android Keystore arbeiten. Allerdings, wenn ich den folgenden Testfall schreiben:Verwenden des Android KeyStore in Robolectric Tests

@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(); 
    } 
} 

Dies schlägt mit folgenden Ausnahme:

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

Ich bin Targeting-API-Ebene ob das hilft.

Antwort

5

Es gibt bereits eine Diskussion dazu unter https://github.com/robolectric/robolectric/issues/1518.

Kurz:

Von java.security.Security javadoc:

Die Standardwerte der Sicherheitseigenschaften von einem umsetzungs bestimmten Ort gelesen werden, die in der Regel die Eigenschaften Datei lib/security/java.security im Java-Installationsverzeichnis.

... die wir wahrscheinlich nicht mit Leuten zum Affen animieren wollen.

Sieht aus wie diese benötigen eine Methode Intercept Regel sein ...

Das gleiche passiert, wenn PowerMockito versuchen.

+0

Danke für diese Detektivarbeit @ marius-bardan. – jackyalcine

Verwandte Themen