Warm tip: This article is reproduced from serverfault.com, please click

c#-在TeamCity中运行nUnit测试时,CurrentCulture错误

(c# - Wrong CurrentCulture when running an nUnit test in TeamCity)

发布于 2011-01-19 07:35:17

我有一个依赖于特定文化的单元测试。

在FixtureSetup中,将Thread.CurrentThread.CurrentCulture都设置Thread.CurrentThread.CurrentUICulture为所需的值(en-US)。

当我从Resharper运行测试时,测试通过了。

当我从TeamCity运行测试(使用运行程序“ NUnit 2.4.6”)时,测试失败,因为 CurrentCulturecs-CZ(我的操作系统的文化)。但是CurrentUICulture还是en-US

Questioner
Miroslav Bajtoš
Viewed
0
Nekresh 2011-01-19 16:26:33

你可以强制使用特定的区域性在当前线程中运行测试 System.Threading.Thread.CurrentThread

// set CurrentCulture to Invariant
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
// set UI culture to invariant
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

你还可以使用CultureInfo.GetCultureInfo提供你想要使用的文化。SetUp你的测试中,这可能会失败

切记将文化恢复到上一个​​文化,TearDown以确保隔离

[TestFixture]
class MyTest {
  CultureInfo savedCulture;

  [SetUp]
  public void SetUp() {
    savedCulture = Thread.CurrentThread.CurrentCulture;
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
  }

  [TearDown]
  public void TearDown() {
    Thread.CurrentThread.CurrentCulture = savedCulture;
  }
}