2013-02-01 1 views
12

既存のApp-Server(TomCat)製品に追加のJUnitテストを追加しようとしています。私は(既存のおよびフィールド化された)カスタムTrustManagerの問題に遭遇しました。このことは本番環境でうまく動作しますが、JUnitでは例外が発生します。TrustManagerFactoryがTrustManagerFactory(Java)でない場合

カスタマイズされたTrustManagerはパスからキーストアをロードするだけで、私たち自身のパブリック証明書を暗黙的に信頼します。

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

例外:何らかの理由で、JUnitsでこれを使用すると、次の行に例外が発生し、この例外は、どのようなプロバイダーに関係なく行われます

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

/アルゴリズムの組み合わせが使用されている(「てSunX509」、 .getDefaultAlgorithm()など)。

洞察を深めることができます。

+0

あなたが使用しないJVM https://groups.google.com/forum/#!topic/powermock/v4nreP2AnOQから取られ

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

:そのための解決策は、テストクラスにアノテーションを使用するのですか? – zibi

+0

AFAICT、Ideaは%JAVA_HOME%を使用しています。これは、以下を解決します。 'Javaバージョン1.6.0_23" ' ' Java(TM)SEランタイム環境(ビルド1.6.0_23-b05) ' ' Java HotSpot -Bit Server VM(ビルド19.0-b09、混合モード) ' –

+0

JUnitはセキュリティプロバイダの設定をどうにか乱してしまったようです。 – EJP

答えて

26

PowerMockがSSLの問題を抱えているように見えます。したがって、間違った工場の読み込みが実行されます。これは

+0

パーフェクト:)ありがとう! – CoderSpinoza

関連する問題