Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同时运行所有单元测试时出现异常_C#_.net_Unit Testing_Vs Unit Testing Framework - Fatal编程技术网

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

C# 同时运行所有单元测试时出现异常,c#,.net,unit-testing,vs-unit-testing-framework,C#,.net,Unit Testing,Vs Unit Testing Framework,我在单元测试课上有很多单元测试 当我单独运行每一个时,它们都通过,但当我同时运行它们时,第一个通过,其余失败: System.ArgumentException:已创建具有相同密钥的项 增加 谁能告诉我为什么?我需要如何纠正错误 样本: public TestContext TestContext { get { return testContextInstance; } set {

我在单元测试课上有很多单元测试

当我单独运行每一个时,它们都通过,但当我同时运行它们时,第一个通过,其余失败:

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);
    }
publictestcontext测试上下文
{
得到
{
返回testContextInstance;
}
设置
{
testContextInstance=值;
}
}
#区域附加测试属性
#端区
/// 
///SplitdSName的测试
///
[TestMethod()]
public void SplitTdsNameTest_SimpleValidName1()
{            
string tdsName=“Daniel Trunley先生”;
预期成员姓名=新成员姓名(“先生”、“丹尼尔”、“特朗利”);
实际成员名称;
实际值=TdsTransformer.SplitTdsName(tdsName);
断言.AreEqual(预期、实际);
}
/// 
///SplitdSName的测试
///
[TestMethod()]
public void SplitTdsNameTest_SimpleValidName2()
{
string tdsName=“Daniel George Trunley先生”;
预期成员姓名=新成员姓名(“先生”、“丹尼尔·乔治”、“特朗利”);
实际成员名称;
实际值=TdsTransformer.SplitTdsName(tdsName);
断言.AreEqual(预期、实际);
}
[TestMethod()]
public void splitdsnametest_SimpleValidName3()
{
字符串tdsName=“Daniel George Trunley”;
MemberName应为新成员名(“,”,“Daniel George Trunley”);
实际成员名称;
实际值=TdsTransformer.SplitTdsName(tdsName);
断言.AreEqual(预期、实际);
}
其余的测试都是相同类型的。

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

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

[TestCleanup()]
public void Cleanup()
{
   // cleanup all shared variables     
}
有用链接:

    • 您的测试没有遵循独立的原则,因此一个测试不应影响其他测试

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

      [TestCleanup()]
      public void Cleanup()
      {
         // cleanup all shared variables     
      }
      
      有用链接:


      您没有任何TestInitialize属性化方法,是吗?@fauxtrot不,我没有,我对单元测试比较陌生?您没有任何TestInitialize属性化方法,是吗?@fauxtrot不,我对单元测试比较陌生?我对单元测试比较陌生,我不知道我在这个清理方法里面放了什么?@user1016253:我相信TdsTransformer.SplitTdsName()更新了TdsTransformer类的一些静态字段/属性,对吗?@sll 1+代表10k声誉:)这个答案实际上帮助了我。在我的测试方法中,主要形式被初始化,以便调用公共方法主题进行测试。在主窗体的初始化下有一些代码分支到其他类的方法,我意识到一些静态变量是由我的同龄人引入的。我不知道在Cleanup方法下包括什么,因为这些静态变量是另一个类的内部变量,但我跳过了从我的单元测试(WinForms)中调用的主窗体初始化中的静态变量初始化。我对单元测试比较陌生,我不知道我在这个清理方法里面放了什么?@user1016253:我相信TdsTransformer.SplitTdsName()更新了TdsTransformer类的一些静态字段/属性,对吗?@sll 1+代表10k声誉:)这个答案实际上帮助了我。在我的测试方法中,主要形式被初始化,以便调用公共方法主题进行测试。在主窗体的初始化下有一些代码分支到其他类的方法,我意识到一些静态变量是由我的同龄人引入的。我不知道在Cleanup方法下包括什么,因为这些静态变量是另一个类的内部变量,但我跳过了从单元测试(WinForms)中调用的主窗体初始化中的静态变量初始化。