サービスにJSONドキュメントを送信するWebサービスクライアント用のJUnitテストを作成しました。assertEqualsを使用して比較した場合、等しいと予想される等しいJSON文字列
"正しい" JSONドキュメントをファイルに保存した後、テスト実行後に実際の結果と比較します。
ラインが同一であるが、彼らは、一致していない:
org.junit.ComparisonFailure:
Expected :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
Actual :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
線を約4K文字、非常に長いので、私はここにそれの多くをカットしますが、その長さは同じです。私はデバッガでstring.size()を比較し、また比較の前にトリムして、暗黙のうちに挿入できるテキストエディタの最後にある見えない記号や空白の記号を削除しました。
また、単独で実行するとテストは正常です。しかし、それは大きなスイートの一部として実行すると失敗します。
グローバル/静的変数がないため、メモリオーバーライドは問題ではありません。 私はこのように、要求文字列を抽出するために、Webサービスクライアントをからかっている:
StringBuilder pd = new StringBuilder();
doAnswer((invocation) -> {
String postDocument = ((String)invocation.getArguments()[0]).trim();
pd.append(postDocument);
return null;
}).when(client).doPost(anyString(), anyObject());
クライアントが嘲笑クラスです。
は、それから私は、文字列のトリミングされたバージョンを比較し、それは私が問題はJSONの仕様自体である :-)自分自身に答える見つけ
String expectedSubmit = TestUtils.readXmlFromFile("strategyexecution\\ireland_bm_strategy_override_expected.json").trim();
assertEquals(expectedSubmit, pd.toString().trim());
エンコードに問題はありますか?実際のバイトが同じかどうかを調べるには、文字列とファイルを別々に書き出し、md5またはsha1のチェックサムを使用してみることもできます。 – inovaovao
投稿する[mcve] 'assertEquals'は壊れていません –
Jenkins envでうまく動作します。 IntelliJ IDEAのバグのように見えます。 IDEAでのみ失敗し、スイート全体(1つのクラスファイル内の独立したテストではない)が実行されたときにのみ失敗します –