C# 同时运行所有单元测试时出现异常
我在单元测试课上有很多单元测试 当我单独运行每一个时,它们都通过,但当我同时运行它们时,第一个通过,其余失败: System.ArgumentException:已创建具有相同密钥的项 增加 谁能告诉我为什么?我需要如何纠正错误 样本: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 {
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
}
有用链接: