27

我正在尝试向现有的 App-Server (TomCat) 产品添加一些额外的 JUnit 测试。我遇到了(现有和已部署的)自定义 TrustManager 的问题。这件事在生产中运行良好,但在 JUnit 期间,出现异常。

定制的 TrustManager 仅从路径加载密钥库,并隐式信任我们自己的公共证书。出于某种原因,在 JUnits 中使用 this 会导致以下行出现异常:

TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("PKIX");    

例外:

java.security.NoSuchAlgorithmException:  class configured for TrustManagerFactory: com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory not a TrustManagerFactory

无论使用何种 Provider/Algorithm 组合(“SunX509”、.getDefaultAlgorithm() 等),都会发生此异常。

任何见解将不胜感激。

4

1 回答 1

67

好吧,看起来 PowerMock 搞砸了 SSL 问题,因此,您加载了错误的工厂。解决方案是在测试类上使用注释:

@PowerMockIgnore("javax.net.ssl.*")

这取自https://groups.google.com/forum/#!topic/powermock/v4nreP2AnOQ

于 2014-05-29T15:38:10.027 回答