に失敗した2つの文字列を比較する(ß、ö、ä、など。)Windows上で動作しますが、私はドイツ語の文字と任意のエンコーディングの問題がある場合、制御ユニットテスト、書かれているLinuxの
@Test
public void testBodyWithDefaultCharset() throws UnsupportedEncodingException {
when(backendDefinition.getProperty(BackendDetailsEnum.MAIL_CHARSET.getName())).thenReturn(null);
Charset defaultCharset = Charset.defaultCharset();
when(packet.getPayload()).thenReturn(defaultCharset.encode("ÄÖÜäöüß").array());
final String mailText = classUnderTest.prepareMailText(backendDefinition, packet);
assertThat(mailText, is(equalTo("ÄÖÜäöüß")));
}
このテストWindows PCにはパスしますが、Linux環境であるJenkinsでは失敗します。エラーメッセージは次のとおりです。
Expected: is "ÄÖÜäöüß"
but: was "???????"
私の質問は、「ÄÖÜäöüß」とmailTextを比較するのは間違っていますか?私は2つの文字列を比較するときにエンコーディングを記述する必要はありません。
'Charset.defaultCharset()'は疑わしいと思います。 UTF-8を選択できますか? – Ryan
デフォルトの文字セットはおそらくUNIXとWindowsの間で違いますが、私はWindowsが 'ISO-1250(Windows)'であると期待していますが、UNIX上で期待するものは本当にわかりません... UTF-8で試すことはできますか? – Shark
デフォルトの文字セットは2つの環境で同じではない可能性があります。 –