【问题标题】:Junit fails on french string assertionJunit 在法语字符串断言上失败
【发布时间】: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 看我上面的编辑

标签: java eclipse maven maven-2 junit


【解决方案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&lt;build&gt; 部分的 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 是最简单的解决方法。对不起,我不能给你更完整的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多