C# 简单ResourceManager示例在单元测试中不起作用

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;

尝试遵循以下步骤:该示例的问题是它混合了针对VisualStudio用户和命令行用户的说明,但我已尽了最大努力只遵循VS说明

因此,我在VisualStudio中创建了一个新的单元测试项目,名为
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是的,输入错误,谢谢。啊,我没有发现正在创建阴影程序集。如果我的答案解决了您的问题,请接受答案。