Проект MSTest не может получить локализованную строку? - PullRequest
5 голосов
/ 22 апреля 2010

Я столкнулся со странной проблемой.В моем модульном тесте я хочу проверить локализованные строки.Тем не менее, я не могу заставить его работать.Например, я создал два ресурса: Resource1.resx для английского и Resource1.zh-CN.resx для китайского.Проект модульного теста может получить только (по умолчанию?) Английскую строку ресурсов.Вот код, который я использую:

ResourceManager actual = new ResourceManager(typeof(LocaleTest.Properties.Resource1));
string name0 = actual.GetString("Name", new CultureInfo("en-US"));
string name1 = actual.GetString("Name", new CultureInfo("zh-CN"));

Я создал другой обычный проект (не проект MSTest), чтобы убедиться, что локализованные строки работают.Итак, он работает в обычном проекте, но не в проекте MSTest.

Это не помогло, даже если бы я добавил следующий код, чтобы сделать 'zh-CN' в качестве текущей культуры модульного теста:

[TestInitialize()]
public void MyTestInitialize()
{
    Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
} 

Кто-нибудь видел подобные проблемы?Есть ли обходной путь?

1 Ответ

10 голосов
/ 22 апреля 2010

Вам не нужно использовать DeploymentItem , чтобы убедиться, что DLL локализации находится в тестовой папке?

[TestMethod()]
[DeploymentItem(@"bin\Debug\fr\Proj.resources.dll", "fr-CA")]
public void TestDialogLocalization(){
 // blah
}
...