【问题标题】:NUnit test runner uses culture "en-US" while OS locale is "de-DE"NUnit 测试运行器使用文化“en-US”,而操作系统区域设置为“de-DE”
【发布时间】:2013-09-26 01:33:21
【问题描述】:

我正在 Windows Server 2008 上运行的新 Bamboo 实例 (5.1.0.3901) 上设置构建。

NUnit 测试运行器通过 MSBuild 启动以运行测试。我的一些在我的机器和另一台服务器上运行良好的测试现在失败了。显然,所有这些测试都取决于文化设置。据我所知,它们要么通过DateTime.Parse(string) 解析日期字符串,要么将依赖于语言的错误消息与硬编码的德语预期消息进行比较。

我已登录Thread.CurrentThread.CurrentUICulture(“en-US”)和Thread.CurrentThread.CurrentCulture(“de-DE”)。

操作系统区域设置为“de-DE”。

如何在不更改这些测试的情况下通过这些测试?因为它们太多了,所以我更喜欢配置 NUnit(或 MSBuild 或 Bamboo)使用“de-DE”运行所有东西。

【问题讨论】:

    标签: msbuild nunit windows-server-2008 bamboo


    【解决方案1】:

    NUnit 具有 SetUpFixture 属性

    标记一个类,该类包含给定命名空间下所有测试装置的一次性设置或拆卸方法。该类最多可以包含一个标有 SetUpAttribute 的方法和一个标有 TearDownAttribute 的方法。

    我认为这是在运行测试之前设置Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCulture 的最全局设置机会。这可能是一个短期的事情,可以帮助你。

    但是,由于您似乎进行了很多单元测试,因此在您的代码库中进行 DateTime.Parse 更改应该不会真正打扰您...

    【讨论】:

    • DateTime.Parse() 调用 在测试中。但是 +1 提到SetUpFixture!我只知道TestFixtureSetUp 的方法在夹具中的第一个测试运行之前运行一次。由于我有 20 多个测试项目,我仍然更喜欢更高级别的设置,所以我不会接受答案(暂时)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2014-08-13
    • 2014-04-16
    相关资源
    最近更新 更多