JUnit中的编码:Gradle vs Eclipse

4

我在Eclipse中有一个带有一些JUnit模型测试的项目。

其中一个测试断言了一些特殊字符。在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)。


你的Java文件是否采用UTF-8编码? - Stefan Birkner
从容器继承,是的。 - Georgian
我在Windows 8.1上遇到了类似的问题 - 目前唯一的解决方案是将GRADLE_OPTS=-Dfile.encoding=utf-8设置为Windows系统变量。但我认为这是一个丑陋的解决方法,因为gradle构建脚本不应该依赖于某些外部配置。 - mschenk74
我已向Gradle提交了一个错误报告,因为缺少配置测试的正确编码的可能性 - 请参见https://discuss.gradle.org/t/no-possibility-to-set-file-encoding-for-junit-tests-in-gradle-2-13-and-odler/17223/1 - mschenk74
2个回答

8

您需要设置任务的编码方式,以便编译测试类:

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

3
每次遇到这种烂事,我都会挠头思考:“这怎么不是默认的呢???” - Jaroslav Záruba

0

您可以使用此功能来覆盖所有Java编译,包括测试和生产代码:

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接