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)
其余的测试都是相同的类型.
您的测试不遵循独立原则,因此一项测试不应影响其他测试.
查看您提供的代码,我可以假设TdsTransformer.SplitTdsName()缓存某些数据的问题
.我建议清理所有共享变量:
[TestCleanup()]
public void Cleanup()
{
// cleanup all shared variables
}
Run Code Online (Sandbox Code Playgroud)
有用的链接: