我遇到了一个奇怪的问题。在我的单元测试中,我想检查本地化的字符串。但是,我似乎无法让它发挥作用。例如,我创建了两个资源:英语的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");
}
有人见过类似的问题吗?有没有解决方法?
答案 0 :(得分:10)
您是否需要使用DeploymentItem来确保本地化DLL位于测试文件夹中?
[TestMethod()]
[DeploymentItem(@"bin\Debug\fr\Proj.resources.dll", "fr-CA")]
public void TestDialogLocalization(){
// blah
}