2015-10-22 2 views
0

У меня есть простой модульный тест и файл ресурсов в другой сборке с нейтральной культурой (DataSource.resx) и конкретной культурой (DataSource.fi-FI.resx).Неверная строка культуры из ResourceManager.GetString

Единичный тест просто проверяет, что я получаю правильную строку на правильном языке. Тестирование устройства отлично работает, если я запускаю его из Visual Studio. Но сбой, если я запустил его из командной строки с помощью mstest - он получает строку культуры по умолчанию вместо той, которую я говорю ей использовать.

Даже предоставление культуры в качестве параметра ResourceManager.GetString дает тот же результат.

Я предполагаю, что это связано с тем, что переводы находятся в другом собрании, но не уверены. Есть идеи? Спасибо !:)

испытания Единица измерения:

var cu = System.Globalization.CultureInfo.GetCultureInfo("fi-FI"); 
System.Threading.Thread.CurrentThread.CurrentUICulture = cu; 
var trans1 = MyResources.Api.DataSource.Source_scrape; 
Trace.WriteLine(trans1); 
var res = MyResources.Api.DataSource.ResourceManager.GetString("Source_scrape", cu); 
Trace.WriteLine(res); 
+1

Десять секунд google hit: http://stackoverflow.com/questions/9484355/why-are-resx-cultures-not-found-in-unit-tests –

+0

Не нашел, что один, спасибо. Не решает мою проблему, даже если она, казалось, решила ее для них. Будет комментировать там. –

ответ

0

Я получил это работает, используя атрибут DeploymentItem (как намекнули в комментариях по ссылке на другой вопрос). Так что я украшен мой метод испытания (может украсить весь класс тест также, я думаю) с:

 [DeploymentItem("fi-FI/MyResources.resources.dll", "fi-FI")] 

Не самое элегантное решение.

Смежные вопросы