【问题标题】:Change locale for JUnit tests via Spring context通过 Spring 上下文更改 JUnit 测试的语言环境
【发布时间】:2013-06-16 04:21:10
【问题描述】:

所有测试都由 gradle 启动。 我想为项目中的所有 JUnit 测试定义语言环境。一开始我想到了以下方法:

public class TestCases {
    static Locale defaultLocale = Locale.getDefault();

    @BeforeClass
    public static void setDefaultLocale() {
        Locale.setDefault(Locale.UK);
    }

    // here goes bunch of tests
    // ...

    @AfterClass
    public static void restoreLocale() {
        Locale.setDefault(defaultLocale);
    }
}

但这太麻烦了,因为我有数百个文件要更改。 我还发现使用 -Duser.language=en 参数(我使用 Intellij)运行单个测试可以完成这项工作。但我无法更改 gradle 脚本以提供此解决方案。 有没有办法通过 Spring 上下文为 JUnit 测试定义语言环境?或者也许还有其他更好的方法?谢谢。

【问题讨论】:

  • 一项改进(尽管不是解决方案)是声明一个父测试类来设置语言环境并让所有相关测试扩展它。
  • 谢谢,这可以工作。但对我来说仍然看起来很麻烦,因为每个测试类的语言环境都更改了两次。或者它看起来很适合我?
  • 您也可以在命令行中为 Gradle 提供系统属性:gradle -Duser.language=en test
  • 测试是通过 gradle wrapper 启动的,我认为它不支持这种设置参数的方式。由于语言环境错误,测试仍然失败。

标签: spring junit gradle


【解决方案1】:

实现此目的的一种方法是添加一个测试生命周期挂钩,该挂钩会在您的套件执行之前触发。

test.beforeSuite { TestDescriptor suite ->
   System.setProperty('user.language', 'en')
}

【讨论】:

  • 正如我所说,很遗憾,我无法更改 gradle 脚本
  • 您能否提供参考资料或您提到的有关 TestDescriptor 的内容?
  • TestDescriptor 在 Gradle API 中描述。
猜你喜欢
  • 2015-02-04
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多