C#如何强制本地化文化进入测试项目的en-US

如何在VS2008中为C#中的测试项目指定concrente Localization Culture? 我正在构建具有web.config中指定的非标准文化的Asp .Net MVC应用程序但是如何为该项目的unit testing设置相同的文化?

你可以设置

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 

在unit testing框架中标记为“test initializer”的方法中。

如果您正在使用xUnit,则可以将UseCultureAttribute添加到项目中,如下所示:

https://github.com/xunit/samples.xunit/blob/master/UseCulture/UseCultureAttribute.cs

要使用它:

 [Fact] [UseCulture("en-US")] public void MyTest() { // ... } 
 System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US"); System.Threading.Thread.CurrentThread.CurrentCulture = ci; 

如果要为整个Test Suite指定CultureInfo而不必将其添加到每个TestClassTestInitializer中,则可以使用AssemblyInitializeAttribute 。

创建一个新的TestClass ,向其添加一个静态方法,设置DefaultThreadCurrentCultureDefaultThreadCurrentUICulture ,然后使用AssemblyInitialzeAttribute修饰该方法。 在运行任何TestMethod之前,在测试套件启动时,此方法将运行一次。 (注意:在测试套件中,您可能只有一个这样的方法用这个属性修饰。)

没有类似于web.config中的设置,它将适用于您的情况。

你可以尝试为每个线程设置它,如其他答案所示。

或者,如果您使用在VS.NET中创建的资源,代码生成会在Resource类上创建一个名为“Culture”的静态属性。 您可以在unit testing的Suite启动方法中设置它。 这将适用于您运行的所有测试。