C# How can I force Localization Culture to en-US for tests project

后端 未结 6 1026
清酒与你
清酒与你 2021-02-02 07:33

How to specify concrente Localization Culture for tests project in C# in VS2008? I\'m building Asp .Net MVC app that has nonstandard culture specified in web.config but how to s

相关标签:
6条回答
  • 2021-02-02 07:35

    For nUnit 3, you can use the attribute [SetUICulture("en-us")]. This will force the culture for this single test.

    0 讨论(0)
  • 2021-02-02 07:40

    If you're using xUnit, you can add the UseCultureAttribute to your project, as defined here:

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

    To use it:

    [Fact]
    [UseCulture("en-US")]
    public void MyTest()
    {
        // ...
    }
    
    0 讨论(0)
  • 2021-02-02 07:42

    If you want to specify the CultureInfo for your entire Test Suite without having to add it in the TestInitializer of every TestClass, you can use the AssemblyInitializeAttribute.

    Inside a Test Class (a class decorated with the attribute [TestClass]), add a static method that sets DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture, and then decorate that method with [AssemblyInitialize].

    This method will then be run once when your test suite starts up, before any TestMethods are run. (Note: you may only have one such method decorated with this attribute in your test suite.)

    Here is an example of using a dedicated Test Class that just sets up the culture, but you can put it in any Test Class:

    [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");
        }
    }
    
    0 讨论(0)
  • 2021-02-02 07:44

    You may set

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

    in method that is marked as "test initializer" in your unit testing framework.

    0 讨论(0)
  • 2021-02-02 07:52
    System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
    System.Threading.Thread.CurrentThread.CurrentCulture = ci;
    
    0 讨论(0)
  • 2021-02-02 08:02

    There isn't a setting similar to the one in web.config that will work in your case.

    You could try setting it for each thread as suggested by the other answers here.

    Alternatively if you are using resources created in VS.NET, the code generation creates a static property on the Resource class called 'Culture'. You could set that in your unit test's Suite startup method. That will apply to all the tests that you run.

    0 讨论(0)
提交回复
热议问题