【问题标题】:change default locale for junit test更改 junit 测试的默认语言环境
【发布时间】:2015-02-04 04:24:16
【问题描述】:

如何更改 JUnit 测试的默认语言环境。当前语言环境是 en。我想测试 es_ES。 我试过了:

System.setProperty("locale", "es_ES");

但这似乎不起作用。

【问题讨论】:

  • 是的,而且?您运行的哪些代码取决于区域设置?
  • 我没明白你的意思。我有一些需要检查的异常消息。我创建了一个单独的资源文件,但是,它没有被链接..
  • 嗯,也许在这种情况下你想看看this project;它使您可以很容易地获取本地化消息

标签: java junit internationalization


【解决方案1】:

您可以使用Locale.setDefault 设置默认Locale

为此 Java 虚拟机实例设置默认语言环境。这不会影响主机区域设置。

Locale.setDefault(new Locale("es", "ES"));

使用以下资源文件进行测试:

  • test.properties

    message=Yes
    
  • test_es_ES.properties

    message=Sí
    

这是我的主要功能,没有更改我的默认语言环境 (en_US):

public static void main(String[] args)
{
    ResourceBundle test = ResourceBundle.getBundle("test");
    System.out.println(test.getString("message"));
}

输出:

Yes

这是我的主要功能,更改了您的测试语言环境 (es_ES):

public static void main(String[] args)
{
    Locale.setDefault(new Locale("es", "ES"));
    ResourceBundle test = ResourceBundle.getBundle("test");
    System.out.println(test.getString("message"));
}

输出:

这在应用于 JUnit 测试用例时应该可以工作。

【讨论】:

  • 在测试类中运行 JUnit 以测试多个本地化可能会导致 LocaleContextHolder 的 Locale 值不正确,因为它在内部使用 ThreadLocal,如在此处提到并在此处回答 stackoverflow.com/questions/60204379/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2023-03-15
相关资源
最近更新 更多