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