it-swarm-ru.tech

C # Как я могу заставить локализацию культуры в США для тестового проекта

Как указать конкретную локализацию культуры для тестового проекта в C # в VS2008? Я создаю приложение Asp .Net MVC, в котором нестандартная культура указана в web.config, но как установить ту же культуру для модульных тестов для этого проекта?

31
mgamer

Вы можете установить

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

в методе, который помечен как "инициализатор теста" в вашей структуре модульного тестирования.

55
Tony Kh

Если вы используете xUnit, вы можете добавить UseCultureAttribute к своему проекту, как определено здесь:

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

Чтобы использовать это:

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

Если вы хотите указать CultureInfo для всего комплекта тестов, не добавляя его в TestInitializer каждого TestClass, вы можете использовать AssemblyInitializeAttribute .

Создайте новое TestClass, добавьте к нему статический метод, который устанавливает DefaultThreadCurrentCulture и DefaultThreadCurrentUICulture, а затем украсьте этот метод с помощью AssemblyInitialzeAttribute. Этот метод будет запущен один раз при запуске набора тестов, прежде чем будут запущены любые методы TestMethods. (Примечание: у вас может быть только один такой метод, украшенный этим атрибутом в вашем наборе тестов.)

2
Jon Senchyna

Для nUnit 3 вы можете использовать атрибут [SetUICulture("en-us")]. Это заставит культуру для этого единственного теста.

2
Klayton Cavalcante

Нет такой настройки, как в web.config, которая бы работала в вашем случае.

Вы можете попробовать установить его для каждой темы, как предложено другими ответами здесь.

В качестве альтернативы, если вы используете ресурсы, созданные в VS.NET, генерация кода создает статическое свойство для класса Resource под названием "Культура". Вы можете установить это в методе запуска Suite вашего модульного теста. Это относится ко всем тестам, которые вы запускаете.

0
Naraen