Junit 在法语字符串断言上失败
Posted
技术标签:
【中文标题】Junit 在法语字符串断言上失败【英文标题】:Junit fails on french string assertion 【发布时间】:2012-12-04 19:32:59 【问题描述】:我有一个在大多数机器上运行良好的单元测试,但是一个 ubuntu 机器似乎无法比较特殊字符“?”。字符本身应该是â。在我的机器上,eclipse 控制台通常会显示我们应该使用哪种编码来确保它正常工作。
The extracted text was wrong expected:<...tons. Il jette le bl[?me sur ....
but was:<...tons. Il jette le bl[?me sur .....
测试在 Eclipse Juno 中使用 Maven 2 和 java 1.7 运行
有人有想法吗...?
编辑:
只有在通过 Maven 测试运行单元测试时才会看到这种行为,而不是在执行作为 Junit 测试运行时...在 maven 配置中,我们有
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
这是为 maven 用户设置和模块的 pom.xml 文件中设置的。
【问题讨论】:
编码?似乎文本在UTF-8
中,而其他内容是预期的。你需要改变期望。
你从哪里读取字符串?来自文件?
@assylias 我从一个硬编码常量中读取
@JanDvorak 因为字符串是硬编码的,你认为我应该在哪里指定编码?
@JanDvorak 看我上面的编辑
【参考方案1】:
我们设法通过@Slawomir Jaranowski 解决THIS 问题的方法解决了这个问题。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Dfile.encoding=$project.build.sourceEncoding</argLine>
</configuration>
</plugin>
【讨论】:
【参考方案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>
【讨论】:
在 unix 机器上,它在 windows 上执行,我们还必须从操作系统级别的 java 变量中设置编码才能工作。【参考方案3】:我最近遇到了 JUnit 中的 Unicode 问题。您可以尝试在 JUnit 测试或程序本身中使用违规 Unicode 字符的转义表示法。
在您的情况下,请尝试使用 /u0032 而不是使用 â.
【讨论】:
问题是我不想重写文本,因为它只在某些特定的机器上失败。我们的构建环境运行良好。我希望在有问题的机器上找到配置更改来解决问题。 This 问题解释得很清楚,我想。我的问题是我们的构建盒升级了,新的 glibc 出现了问题,或者类似的问题。我的技术主管认为将其映射到转义的 Unicode 是最简单的解决方法。对不起,我不能给你更完整的答案。以上是关于Junit 在法语字符串断言上失败的主要内容,如果未能解决你的问题,请参考以下文章