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

You may set

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

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


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()
{
    // ...
}

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");
    }
}