【问题标题】:Writing test case for keystore.load(InputStream,password)为 keystore.load(InputStream,password) 编写测试用例
【发布时间】: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 上下文期间发生异常。 {}

【问题讨论】:

  • 我不确定您要在这里完成什么。如果您只想模拟 KeyStoreTrustManagerFacotry 不做任何事情,则必须模拟它,使用 mockStatic 并让 getInstance 返回您希望它们返回的模拟。但是,您的测试会覆盖您使用真实文件创建的模拟?
  • 我也尝试过使用mockStatic,但是当我尝试使用getInstance 返回模拟时,它会抛出缺少方法调用异常
  • 此外,模拟并没有覆盖真实文件,这似乎是这里的问题。它实际上是将 InputStream 加载到引擎中。
  • 您可能希望使用新代码和相关的堆栈跟踪来更新您的问题。

标签: java junit mockito keystore powermockito


【解决方案1】:

我找不到模拟 keystore.load() 函数的方法。所以我用它各自的密码传递了虚拟密钥库文件。像魅力一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多