我在另一个具有中性文化(DataSource.resx)和特定文化(DataSource.fi-FI.resx)的程序集中有一个简单的单元测试和资源文件。
单元测试只测试我用正确的语言得到正确的字符串。如果我从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);
答案 0 :(得分:0)
我通过使用DeploymentItem属性(正如在链接到另一个问题的评论中暗示的那样)使其工作。所以我装饰了我的测试方法(也可以装饰整个测试类,我猜):
[DeploymentItem("fi-FI/MyResources.resources.dll", "fi-FI")]
不是最优雅的解决方案。