2012-12-17 19 views
2

我有一個單元測試,在大多數機器上運行良好,但一個Ubuntu機箱似乎無法比較特殊字符「?」。角色本身應該是'在我的機器上,eclipse控制檯通常會顯示我們應該使用哪種編碼來確保其正常工作。Junit在法語字符串斷言失敗

The extracted text was wrong expected:<...tons. Il jette le bl[?me sur .... 

but was:<...tons. Il jette le bl[?me sur ..... 

該測試的Eclipse朱諾內使用Maven 2運行使用Java 1.7

沒有人有一個想法...?

編輯:

運行時,基於Maven測試單元測試,而不是執行運行作爲JUnit測試的時候......在Maven配置此行爲是隻看到我們有

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

這是爲maven用戶設置和模塊的pom.xml文件設置的。

+0

編碼?看起來,文本是在'UTF-8',而其他東西是預期的。你需要改變期望。 –

+0

你從哪裏讀取字符串?從一個文件? – assylias

+0

@assylias我從硬編碼常量 – Stainedart

回答

2

嘗試把UTF-8編碼maven-compiler-plugin<build>部分在pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    <encoding>UTF-8</encoding> 
    </configuration> 
</plugin> 
+0

明天早上我會試試這個。 thx – Stainedart

+0

@Stainedart是否有效? – Mark

+0

在windows上做的unix機器上,我們也必須從OS級別的java變量中設置編碼。 – Stainedart

0

我最近在JUnit中遇到了Unicode問題。您可以嘗試在JUnit測試中或在程序本身中使用有問題的Unicode字符的轉義符號。

在你的情況下,嘗試使用/ u0032而不是使用?

+0

問題是我不想重寫文本,因爲它只在某些特定的機器上失敗。我們的構建環境工作正常。我希望找到有問題的機器上的配置更改來解決問題。 – Stainedart

+0

[這](http://stackoverflow.com/questions/4237581/comparing-unicode-characters-in-junit)問題解釋得很清楚,我想。 我的問題是,我們的構建箱升級,新的glibc有問題,或類似的東西。將它映射到逃脫的Unicode被我的技術主管認爲是最容易修復的。對不起,我不能給你一個更完整的答案。 – KJP