2

MSTestのTestMethods間で状態を共有するにはどうすればよいですか。これらのテストは、順序付きテストとして順番に実行されます。

    private TestContext testContext;

    public TestContext TestContext
    {
        get { return this.testContext; }
        set { this.testContext = value;}
    }

    [TestMethod]
    public void Subscribe()
    {
        bool subscribed = true;
        TestContext.Properties.Add("subscribed", subscribed);
        Assert.IsTrue(subscribed == true, string.Format("Subscribed...{0}", this.GetHashCode()));
    }


    [TestMethod]
    public void GenerateEvent()
    {
        bool subscribed = (bool)TestContext.Properties["subscribed"];
        Assert.IsTrue(subscribed == true, string.Format("Subscribed...{0}", this.GetHashCode()));

    }

前もって感謝します。

4

4 に答える 4

1

Vyas、私はあなたがまだ間違ったことをしているというChadに同意します.

そうは言っても、TestContext オブジェクトの使用を調べることができます。

http://blogs.msdn.com/vstsqualitytools/archive/2006/01/10/511030.aspxを参照してください。

于 2008-10-17T02:25:53.990 に答える
0

チャドが指摘したように、フロー全体をテストするために、単一のテストを使用する以外に方法はないようです。

TestContext.BeginTimerとEndTimerを使用して、メソッドの各呼び出しの時間を計測できるようです。

これが私がこの回答を受け取ったMSDNフォーラムへのリンクです

于 2008-10-19T04:21:34.440 に答える
0

静的メンバーを使用して、テスト メソッド間でデータを共有できます。

例えば:

private static List<string> SharedValues = new List<string>();

[TestMethod]
public void TestMethod1()
{
   SharedValues.Add("Awesome!");
}

[TestMethod]
public void TestMethod2()
{
   SharedValues.Add("Thanks for the answer!");
}

[TestMethod]
public void TestMethod3()
{
    Assert.IsTrue(SharedValues.Contains("Awesome!"));
    Assert.IsTrue(SharedValues.Contains("Thanks for the answer!"));
}

このコードをコピーして、新しい順序付きテストを作成し、TestMethod1、TestMethod2、TestMethod3 をテストします。通じます!

于 2008-12-31T16:54:51.263 に答える
0

TestContext ではなく、クラス レベルの静的フィールドまたはプロパティに格納することで、テスト間で情報を共有できます。このように、コピーは 1 つだけです。さらに、1 つのテストでこれらのフィールドまたはプロパティに入力されたものはすべて、後続のテストで使用できます。

そうは言っても...順序付けられたテストや相互依存のテストは依然として悪です。

于 2011-09-14T12:22:30.463 に答える