jUnit在多种文化中测试Double.toString

时间:2011-11-18 22:48:01

标签: java internationalization junit

我有一个开源库,它有大量的单元测试,可以比较字符串形式的数字。

这些测试在en-GBen-US和其他文化中正常传递,其中数字通常以1,234.00的形式编写。

然而,在德国和法国等文化中,这些值的格式不同,测试失败。

如何强制jUnit测试以en-GB运行?

编辑 this kind of thing在NUnit中可用。

3 个答案:

答案 0 :(得分:4)

我不确定它是所有JVM的标准,但是在Windows上使用Oracle的JVM,您可以使用user.language和user.country系统属性在启动JVM时设置语言环境:

java -Duser.language=en -Duser.country=GB ...

当然,您也可以使用

在Java中设置默认语言环境
Locale.setDefault(new Locale("en", "GB"));

请注意,Double.toString与语言环境无关。

答案 1 :(得分:1)

如何启动jUnit?

传递适当的语言属性将更多地取决于您的环境而不是jUnit本身。

或者(我认为这是一个更好的解决方案),你可以比较值而不是字符串:

assertEquals(12.3, Double.valueOf(aDoubleString));
assertEquals(Double.toString(12.3), aDoubleString);

而不是

assertEquals("12.3", aDoubleString)

答案 2 :(得分:0)

有两个使用JUnit 4规则的要点来修改几个测试的默认语言环境:

LocaleRule,一个非常简单的实现。

DefaultLocaleRule有一些静态辅助方法,允许切换单个测试的默认语言环境。