试图遵循这一点:http://msdn.microsoft.com/en-us/library/21a15yht.aspx该示例的问题在于它是visual studio用户和命令行用户的指令混合,但我尽我所能只遵循VS指令。简单的ResourceManager示例不能在单元测试中工作
所以我有:在视觉工作室创建一个新的单元测试项目,名为Example
。
我添加了一个名为Greeting.en-US.resx
的资源,并在名为HelloString
中放入了一个字符串。
编辑我现在已经添加了名为Greeting.resx
串另一个默认的资源文件是 “你好(默认)”
我的单元测试:
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)>.
相同的代码在控制台应用程序中工作得很好。
您的资源文件名是Greetings(复数),但您以单数形式请求资源 - 问候语。虽然我很惊讶你的代码在控制台中工作。可能是你在这个问题上犯了一个错字? – vlad2135
@ vlad2135是的错字,谢谢。 – weston