如何在 NUnit 中使用自定义 CultureInfo?
How to use custom CultureInfo in NUnit?
我希望测试使用自定义 CultureInfo
。
我创建了 CultureInfo
并将其设置为 TestExecutionContext.CurrentContext.CurrentCulture
属性。但它不起作用。测试仍在使用默认文化。
[OneTimeSetUp]
public async Task OneTimeSetUp() {
var culture = new CultureInfo( CultureInfo.InvariantCulture.Name );
culture.DateTimeFormat.LongTimePattern = "HH:mm:ss:fff";
TestExecutionContext.CurrentContext.CurrentCulture = culture;
await Task.Delay( 1 );
}
[Test]
public void Test() {
TestContext.WriteLine( TestExecutionContext.CurrentContext.CurrentCulture.EnglishName ); // Russian (Ukraine)
TestContext.WriteLine( CultureInfo.CurrentCulture.EnglishName ); // Russian (Ukraine)
TestContext.WriteLine( Thread.CurrentThread.CurrentCulture.EnglishName );
}
我该怎么做?
更新: 它不仅仅适用于异步 OneTimeSetUp
方法。
只能在 async
OneTimeSetUp
方法中设置 Thread.CurrentThread.CurrentCulture
。
我希望测试使用自定义 CultureInfo
。
我创建了 CultureInfo
并将其设置为 TestExecutionContext.CurrentContext.CurrentCulture
属性。但它不起作用。测试仍在使用默认文化。
[OneTimeSetUp]
public async Task OneTimeSetUp() {
var culture = new CultureInfo( CultureInfo.InvariantCulture.Name );
culture.DateTimeFormat.LongTimePattern = "HH:mm:ss:fff";
TestExecutionContext.CurrentContext.CurrentCulture = culture;
await Task.Delay( 1 );
}
[Test]
public void Test() {
TestContext.WriteLine( TestExecutionContext.CurrentContext.CurrentCulture.EnglishName ); // Russian (Ukraine)
TestContext.WriteLine( CultureInfo.CurrentCulture.EnglishName ); // Russian (Ukraine)
TestContext.WriteLine( Thread.CurrentThread.CurrentCulture.EnglishName );
}
我该怎么做?
更新: 它不仅仅适用于异步 OneTimeSetUp
方法。
只能在 async
OneTimeSetUp
方法中设置 Thread.CurrentThread.CurrentCulture
。