2

これに従おうとしています: 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)>.

同じコードがコンソール アプリでも問題なく機能します。

4

1 に答える 1