1

ユニットテストクラスにはたくさんのユニットテストがあります。

それぞれを個別に実行すると、すべて合格しますが、同時にすべて実行すると、最初の1つは合格し、残りは失敗します。

System.ArgumentException:同じキーを持つアイテムがすでに追加されています

誰か教えてもらえますか?そして、どのようにエラーを修正する必要がありますか?

サンプル:

 public TestContext TestContext
    {
        get
        {
            return testContextInstance;
        }
        set
        {
            testContextInstance = value;
        }
    }

    #region Additional test attributes
    #endregion

    /// <summary>
    ///A test for SplitTdsName
    ///</summary>
    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName1()
    {            
        string tdsName = "Mr Daniel Trunley";
        MemberName expected = new MemberName("Mr", "Daniel", "Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);            
    }

    /// <summary>
    ///A test for SplitTdsName
    ///</summary>
    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName2()
    {
        string tdsName = "Mr Daniel George Trunley";
        MemberName expected = new MemberName("Mr", "Daniel George", "Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);
    }

    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName3()
    {
        string tdsName = "Daniel George Trunley";
        MemberName expected = new MemberName("", "", "Daniel George Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);
    }

残りのテストはすべて同じタイプです。

4

1 に答える 1

7

テストは独立した原則に従わないため、1つのテストが他のテストに影響を与えることはありません。

あなたが提供したコードを見ると、 TdsTransformer.SplitTdsName()いくつかのデータをキャッシュする問題があると推測できます。すべての共有変数をクリーンアップすることをお勧めします。

[TestCleanup()]
public void Cleanup()
{
   // cleanup all shared variables     
}

便利なリンク:

于 2011-11-02T14:21:25.193 に答える