【发布时间】:2019-11-29 13:04:57
【问题描述】:
我一直在尝试为SSLContextCongif.java 类编写测试用例。有一个代码部分我一直很难为其编写测试用例:
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(trustStore), password);
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init(ks);
我为此编写的测试部分:
keystore=PowerMockito.mock(KeyStore.class);
trustManagerFactory =mock(TrustManagerFactory.class);
String keys="mockedkeys";
keystore = KeyStore.getInstance("JKS");
keystore.load(File(keys), password);
trustManagerFactory= TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init(keystore);
但问题是,测试用例在ks.load() 处抛出异常在设置 SSL 上下文期间发生异常。 {}
【问题讨论】:
-
我不确定您要在这里完成什么。如果您只想模拟
KeyStore和TrustManagerFacotry不做任何事情,则必须模拟它,使用mockStatic并让getInstance返回您希望它们返回的模拟。但是,您的测试会覆盖您使用真实文件创建的模拟? -
我也尝试过使用
mockStatic,但是当我尝试使用getInstance返回模拟时,它会抛出缺少方法调用异常。 -
此外,模拟并没有覆盖真实文件,这似乎是这里的问题。它实际上是将 InputStream 加载到引擎中。
-
您可能希望使用新代码和相关的堆栈跟踪来更新您的问题。
标签: java junit mockito keystore powermockito