试图遵循这个:http://msdn.microsoft.com/en-us/library/21a15yht.aspx示例的问题在于它是视觉工作室用户和命令行用户的混合指令,但我已尽力遵循VS指令。
所以我有:在视觉工作室中创建了一个名为Example
的新单元测试项目。
我添加了一个名为Greeting.en-US.resx
的资源,并在名为HelloString
的字符串中添加了一个字符串。
编辑我现在添加了另一个名为Greeting.resx
的默认资源文件字符串为“Hello(默认)”
我的单元测试:
using System.Globalization;
using System.Resources;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Example
{
[TestClass]
public class GreetingTests
{
[TestMethod]
public void Hello()
{
var newCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;
var rm = new ResourceManager("Example.Greeting",
typeof (GreetingTests).Assembly);
Assert.AreEqual("Hello (US)", rm.GetString("HelloString"));
}
}
}
现在它只加载默认的
Assert.AreEqual failed. Expected:<Hello (US)>. Actual:<Hello (Default)>.
相同的代码在Console App中工作正常。
答案 0 :(得分:1)
嗯,我认为这是因为您的单元测试工具阴影复制主程序集但不复制卫星。 Enable shadow copying for satellite assembly并重新运行单元测试。
确认我对Assembly.GetExecutingAssembly()的猜测值。针对.Codebase的位置。