比较 Junit 中的 unicode 字符

发布于 2024-10-04 02:52:16 字数 700 浏览 3 评论 0原文

我在某些流程中使用 unicode 字符时遇到了问题。所以我修复了流程并添加了测试。

assertEquals("Björk", buyingOption.getArtist());

buyOption.getArtist() 将返回与上相同的名称,这是一个片段:

alt text

但 junit 将失败消息:

junit.framework.ComparisonFailure: null 
Expected :Bj?rk
Actual   :Bj?rk
    at com.delver.update.system.AECSystemTest.basicOperationtsTest1(AECSystemTest.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

I had problems in some flow with unicode chars in some of my flows. So i fixed the flow and added a test.

assertEquals("Björk", buyingOption.getArtist());

the buyingOption.getArtist() will return the same name that is on ,here is a snippet :

alt text

but junit will fail with the message :

junit.framework.ComparisonFailure: null 
Expected :Bj?rk
Actual   :Bj?rk
    at com.delver.update.system.AECSystemTest.basicOperationtsTest1(AECSystemTest.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水波映月 2024-10-11 02:52:16

这可能是由于 Java 源文件使用的默认编码造成的。在编译测试时,JUnit 源代码中字符串文字中的 ö 可能会被转换为其他内容。

为了避免这种情况,请在 JUnit 源代码的字符串文字中使用 Unicode 转义符 (\uxxxx):

assertEquals("Bj\u00F6rk", buyingOption.getArtist());

This is probably due to the default encoding used for your Java source files. The ö in the string literal in the JUnit source code is probably being converted to something else when the test is compiled.

To avoid this, use Unicode escapes (\uxxxx) in the string literals in your JUnit source code:

assertEquals("Bj\u00F6rk", buyingOption.getArtist());
平生欢 2024-10-11 02:52:16

我同意 Grodriguez 的观点,但建议您将默认编码更改为 UTF-8,并忘记此类问题。

如何做到这一点?这取决于您的 IDE。例如,在 Eclipse 中,转到 Window/Preferences,然后输入“encoding”,选择 Workspace 并将编码更改为 UTf-8

I agree with Grodriguez but would like to suggest you to change your default encoding to UTF-8 and forget about this kind of problems.

How to do this? It depends on your IDE. For example in Eclipse go to Window/Preferences then type "encoding", choose Workspace and change encoding to UTf-8

肥爪爪 2024-10-11 02:52:16

我发现解决方案是在运行 mvn test 之前更改默认编码

我对此问题的修复是在运行之前设置 ENV var JAVA_TOOL_OPTIONS

export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8"    
mvn test

I found the solution was to change the default encoding before running mvn test

My fix to this issue was to set the ENV var JAVA_TOOL_OPTIONS before running

export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8"    
mvn test
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文