C# 简单ResourceManager示例在单元测试中不起作用
尝试遵循以下步骤:该示例的问题是它混合了针对VisualStudio用户和命令行用户的说明,但我已尽了最大努力只遵循VS说明 因此,我在VisualStudio中创建了一个新的单元测试项目,名为C# 简单ResourceManager示例在单元测试中不起作用,c#,globalization,vs-unit-testing-framework,C#,Globalization,Vs Unit Testing Framework,尝试遵循以下步骤:该示例的问题是它混合了针对VisualStudio用户和命令行用户的说明,但我已尽了最大努力只遵循VS说明 因此,我在VisualStudio中创建了一个新的单元测试项目,名为Example 我添加了一个名为Greeting.en US.resx的资源,并将一个名为HelloString的字符串放入其中 Edit我现在添加了另一个名为Greeting的默认资源文件。resx字符串是“Hello(默认)” 我的单元测试: using System.Globalization;
Example
我添加了一个名为Greeting.en US.resx
的资源,并将一个名为HelloString
的字符串放入其中
Edit我现在添加了另一个名为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失败。预期:。实际值:。
同样的代码在控制台应用程序中也能正常工作。我认为这是因为单元测试工具shadow复制了主程序集,但没有复制附属程序集。然后重新运行单元测试
要确认我的猜测,请对照.Codebase检查Assembly.getExecutionGassembly().Location的值。您的资源文件名是问候语(复数),但您请求的是单数形式的资源-问候语。尽管我很惊讶您的代码在控制台中工作。可能是您在问题中输入了错误?@vlad2135是的,输入错误,谢谢。啊,我没有发现正在创建阴影程序集。如果我的答案解决了您的问题,请接受答案。