2016-03-28 77 views
1

我在Eclipse中有一個包含一些JUnit模型測試的項目。在JUnit中進行編碼:Gradle vs Eclipse

其中一個測試聲明瞭一些特殊字符。它通過Eclipse(Run As - >JUnit Test),但在使用Gradle(clean test)運行時失敗。

失敗:org.junit.ComparisonFailure: expected:<[ü]> but was:<[�]>,在Gradle報告中。

我已經將tasks.withType(JavaCompile) {options.encoding = 'UTF-8}添加到構建文件,它修復了編譯時編碼問題。但我仍然遇到運行時錯誤(請參閱上面的失敗)。

添加compileJava.options.encoding = 'UTF-8'沒有幫助。

該測試在MacOS上運行,項目編碼從操作系統(Windows + UTF-8,在我的情況下)繼承。

+0

是否你的java文件有UTF-8編碼? –

+0

@StefanBirkner從容器繼承,是的。 – GGrec

+0

我在Windows 8.1上面對類似的行爲 - 目前唯一的解決方案是在Windows中將GRADLE_OPTS = -Dfile.encoding = utf-8設置爲系統變量。但我認爲這是一個醜陋的解決方法,因爲Gradle構建腳本不應該依賴某些外部配置。 – mschenk74

回答

1

您需要設置任務的編碼,編譯測試類,太:

compileJava.options.encoding = 'UTF-8' 
compileTestJava.options.encoding = 'UTF-8'