Mir*_*toš 5 .net c# teamcity nunit currentculture
我有一个依赖于特定文化的单元测试.
在FixtureSetup,我都设置Thread.CurrentThread.CurrentCulture并Thread.CurrentThread.CurrentUICulture为需要的值(EN-US).
当我从Resharper运行测试时,它通过了.
当我运行从TeamCity的测试(使用亚军"NUnit的2.4.6"),测试失败,因为
CurrentCulture是cs-CZ(我的操作系统的文化).但CurrentUICulture仍然是en-US.
您可以强制使用特定的文化来在当前线程中运行测试 System.Threading.Thread.CurrentThread
// set CurrentCulture to Invariant
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
// set UI culture to invariant
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
Run Code Online (Sandbox Code Playgroud)
您还可以使用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;
}
}
Run Code Online (Sandbox Code Playgroud)