Сравнение символов Юникода в Junit - PullRequest
2 голосов
/ 21 ноября 2010

У меня были проблемы в каком-то потоке с символами Юникода в некоторых моих потоках. Поэтому я исправил поток и добавил тест.

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)

Ответы [ 3 ]

3 голосов
/ 21 ноября 2010

Вероятно, это связано с кодировкой по умолчанию, используемой для исходных файлов Java. ö в строковом литерале в исходном коде JUnit, вероятно, преобразуется во что-то другое при компиляции теста.

Чтобы избежать этого, используйте экранирование Unicode (\uxxxx) в строковых литералах в вашем исходном коде JUnit:

assertEquals("Bj\u00F6rk", buyingOption.getArtist());
2 голосов
/ 17 мая 2013

Я обнаружил, что решением было изменить кодировку по умолчанию перед запуском mvn test

Мое исправление этой проблемы заключалось в установке ENV var JAVA_TOOL_OPTIONS перед запуском

export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8"    
mvn test
2 голосов
/ 21 ноября 2010

Я согласен с Grodriguez, но хотел бы предложить вам изменить кодировку по умолчанию на UTF-8 и забыть о подобных проблемах.

Как это сделать? Это зависит от вашей IDE. Например, в Eclipse перейдите в Window / Preferences, затем введите «encoding», выберите Workspace и измените кодировку на UTf-8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...