mga*_*mer 31 c# locale unit-testing localization
如何在VS2008中为C#中的测试项目指定concrente Localization Culture?我正在构建具有web.config中指定的非标准文化的Asp .Net MVC应用程序,但是如何为该项目的单元测试设置相同的文化?
小智 56
你可以设置
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)
在单元测试框架中标记为"test initializer"的方法中.
如果您正在使用xUnit,则可以将其添加UseCultureAttribute
到项目中,如下所示:
https://github.com/xunit/samples.xunit/blob/master/UseCulture/UseCultureAttribute.cs
要使用它:
[Fact]
[UseCulture("en-US")]
public void MyTest()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果要指定CultureInfo
为您的整个测试套件,而无需将其添加在TestInitializer
每一个TestClass
,你可以使用AssemblyInitializeAttribute。
在测试类(用 属性修饰的类[TestClass]
)中,添加一个设置DefaultThreadCurrentCulture
和的静态方法,DefaultThreadCurrentUICulture
然后用 修饰该方法[AssemblyInitialize]
。
当您的测试套件启动时,此方法将在运行任何 TestMethods 之前运行一次。(注意:您的测试套件中可能只有一个使用此属性修饰的此类方法。)
这是一个使用专用测试类的示例,该类仅用于设置文化,但您可以将其放在任何测试类中:
[TestClass]
public static class InitializeCulture
{
[AssemblyInitialize]
public static void SetEnglishCultureOnAllUnitTest(TestContext context)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22688 次 |
最近记录: |