我编写了一个单元测试,用于控制德语字母(ä,ö,ß等)是否存在编码问题。
@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中传递但在jenkins上失败,这是一个Linux环境。错误消息如下;
Expected: is "ÄÖÜäöüß"
but: was "???????"
我的问题是,将mailText与“ÄÖÜäöüß”进行比较是不对的?我想,当我比较两个字符串时,我不需要说出任何编码。
答案 0 :(得分:0)
您的文件编码和内容是否可以在Windows上以不同的方式在Linux上进行定义?听起来它与文件编码有所区别。
您可以尝试在.bashrc中使用显式设置编码,或者使用Linux中的locale
- 程序(使用UTF-8的示例):
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
输出是什么:
locale
?
与预期的不同?
还要检查defaultCharset()
使用的Charset。尝试在Windows / Linux上输出值。
答案 1 :(得分:0)
我已经更改了断言行,如下所示。它可以工作。
using System.Windows.Automation;
Automation.AddAutomationEventHandler(
WindowPattern.WindowOpenedEvent,
mainWindow.AutomationElement,
TreeScope.Descendants,
(sender, e) =>
{
var element = sender as AutomationElement;
if (!(element.Current.LocalizedControlType == "Dialog" && element.Current.Name == "modalWindowTitle"))
return;
Automation.RemoveAllEventHandlers();
// Here run your code. The modal window was opened
});