ich einen Komponententest geschrieben haben, die, wenn es steuert alle Codierung Probleme mit Deutsch Buchstaben (ä, ö, ß, etc.)zwei Strings funktioniert auf Windows Vergleicht man aber nicht auf 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("ÄÖÜäöüß")));
}
Dieser Test läuft in Windows pc aber scheitert an jenkins, die eine Linux-Umgebung ist. Die Fehlermeldung lautet wie folgt;
Expected: is "ÄÖÜäöüß"
but: was "???????"
Meine Frage ist, ist es falsch, mailText mit "ÄÖÜäöüß" zu vergleichen? Ich glaube, ich muss keine Codierung angeben, wenn ich zwei Strings vergleiche.
'Charset.defaultCharset()' klingt verdächtig. Können Sie UTF-8 auswählen? – Ryan
Standard-Zeichensatz wird wahrscheinlich zwischen Unix und Windows unterscheiden, würde ich erwarten, dass Windows zu sein "ISO-1250 (Windows)" aber ich würde nicht wirklich wissen, welche unter Unix zu erwarten ... können Sie mit UTF-8 versuchen? – Shark
Der Standard-Zeichensatz ist in Ihren beiden Umgebungen möglicherweise nicht identisch, daher die unterschiedlichen Ergebnisse. –