我正在测试一个Keystore
类中调用各种静态方法和实例方法的方法,我想模拟这些方法,但是即使我使用PowerMockito并遇到了很多麻烦,也遇到了麻烦那里。我模拟了KeyStore.getInstance
以返回KeyStore
类的模拟实例,然后模拟了load
方法的行为。但是,我得到了IOException
无效的密钥库格式,并且使用调试器可以看到KeyStore.getInstance
没有返回该类的模拟实例。任何帮助将不胜感激。
这是我的考试:
@RunWith(RobolectricTestRunner.class)
@PrepareForTest({KeyStore.class})
public class MyTest {
@Rule
public PowerMockRule rule = new PowerMockRule();
...
private static final String TEST_PASSWORD = "secret";
private KeyStore mockKeyStore;
private TestClass sut = new TestClass();
public void testMethodA() {
mockKeyStore = PowerMockito.mock(KeyStore.class);
PowerMockito.mockStatic(KeyStore.class);
PowerMockito.when(KeyStore.getInstance(any(String.class))).thenReturn(mockKeyStore);
doNothing().when(mockKeyStore).load(any(InputStream.class), eq(TEST_PASSWORD.toCharArray()));
//other setup
sut.methodA();
}
}
methodA
在TestClass
public void methodA() {
...
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
...
keyStore.load(fis, password);
...
}