我在进行单元测试时遇到了一些问题,无法将它们复制并粘贴在这里,但我会提供我能提供的内容。
问题似乎是,如果我逐个运行测试,一切都按预期工作,但如果我告诉它同时运行所有测试,则只有五分之一的测试通过。
[TestMethod]
public void ObjTest()
{
//Arrange - multiple ecus and items
var t = new var();
t.itemNumbers = new List<ItemNumber>();
obj e = new obj();
e.property = "(12345 OR 55555) AND !65232";
Globals.masterList.Add(e);
ItemNumber i = new ItemNumber();
i.num= "12345";
ItemNumber i1 = new ItemNumber();
i1.num= "55555";
ItemNumber i2 = new ItemNumber();
i2.num= "55556";
t.itemNumbers.Add(i);
t.itemNumbers.Add(i1);
t.itemNumbers.Add(i2);
ICollection<Iinterface> tmp = new List<Iinterface>();
//act, process the ecu and item lists
;
functionCalled(t.itemNumbers, Globals.masterList, ref tmp);
//assert, there should be only 2 added to the list
Assert.AreEqual(1, tmp.Count, " ");
Assert.AreEqual("(12345 OR 55555) AND !65232", functionCalled(t.itemNumbers, Globals.masterList, ref tmp), "Wrong obj returned.");
}
所有单元测试基本上都是复制并粘贴,只需更改 e.property 和可能更改其中一个 i 数字,
这些测试旨在检查由用户输入引起的边界情况。
是否有什么我错过的东西可以确保作用域清除所有变量和测试之间的所有内容,或者强制串行执行?
Globals.masterList.Add(e);
是你的问题所在——测试中有一个全局元素意味着它们不是相互独立的。这很可疑。 - dav_iGlobals.masterList.Add(e)
没有关系,我会舔我的小脚趾。 - Jeroen Vannevel