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 次 |
| 最近记录: |