2016-03-28 78 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'