試圖遵循這一點: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