2010-11-21 7 views
2

Ich hatte Probleme in einigen Flow mit Unicode-Zeichen in einigen meiner Flüsse. Also habe ich den Fluss repariert und einen Test hinzugefügt.Vergleichen von Unicode-Zeichen in Junit

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

die buyingOption.getArtist() den gleichen Namen zurück, die auf, hier ist ein Ausschnitt:

alt text

aber junit wird mit der Meldung fehlschlagen:

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) 

Antwort

3

Dies liegt wahrscheinlich an der Standardcodierung für Ihre Java-Quelldateien. Das ö in dem Zeichenfolgenliteral in dem JUnit-Quellcode wird wahrscheinlich zu etwas anderem konvertiert, wenn der Test kompiliert wird.

Um dies zu vermeiden, verwenden Sie Unicode (\uxxxx) in dem Stringliterale in Ihrem JUnit Quellcode entkommt:

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

ich mit Grodriguez zustimmen, aber möchten Sie vorschlagen, Ihre Standard-Kodierung auf UTF-8 zu ändern und vergiss diese Art von Problemen.

Wie geht das? Es hängt von Ihrer IDE ab. ging zum Beispiel in Eclipse Window/Preferences dann „Codierung“, wählen Sie Workspace und ändern Kodierung UTF-8

+0

Ok laufen, ich denke, dann gibt es einige Konfiguration für maven junit oder Compiler-Plugin. – Roman

+0

@Roman - In Ihrer Maven pom.xml müssen Sie die Kodierung Ihrer Quelldateien angeben, damit sie zu Ihrem Editor passt. Dies gewährleistet eine konsistente Kompilierung in jeder Umgebung. http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding – McDowell

+0

McDowell: Das Ändern der Standardcodierung ist in Ordnung, solange Sie alleine oder zumindest in einer "kontrollierten" Umgebung arbeiten . Es wird jedoch schwieriger, wenn Sie Teil eines Teams sind, da jeder möglicherweise an einer anderen Umgebung arbeitet. Die Verwendung von Unicode-Escapes in Ihren Quelldateien ist narrensicher - Dateicodierungen spielen keine Rolle mehr, unabhängig davon, welchen Editor/Compiler/Setup Sie verwenden. – Grodriguez

2

fand ich die Lösung, die die Standard-Kodierung vor dem Ausführen von mvn Test

Meine Fix, dies zu ändern war Thema war die ENV var JAVA_TOOL_OPTIONS zu setzen, bevor

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