在同时运行所有单元测试时出现异常

edi*_*ode 1 .net c# unit-testing vs-unit-testing-framework

我在单元测试类中有一堆单元测试.

当我单独运行每一个时,它们都会通过,但是当我同时运行它们时,第一个通过而其余的都通过:

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);
    }
Run Code Online (Sandbox Code Playgroud)

其余的测试都是相同的类型.

sll*_*sll 7

您的测试不遵循独立原则,因此一项测试不应影响其他测试.

查看您提供的代码,我可以假设TdsTransformer.SplitTdsName()缓存某些数据的问题 .我建议清理所有共享变量:

[TestCleanup()]
public void Cleanup()
{
   // cleanup all shared variables     
}
Run Code Online (Sandbox Code Playgroud)

有用的链接: