gpt4 book ai didi

c# - 一起运行时单元测试失败,单独通过

转载 作者:行者123 更新时间:2023-11-30 17:45:14 25 4
gpt4 key购买 nike

所以我的单元测试有一些问题,我不能在这里复制并粘贴它们,但我会尽我所能。

问题似乎是,如果我一个一个地运行测试,一切都会按预期进行,但如果我告诉它一起运行测试,1/5 将通过,

[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);假设您的单元测试在五个线程中执行。这意味着 Globals.masterList.Add(e); 将被执行五次或 masterList 将被五个不同的线程修改。然后你有下一行代码:

Assert.AreEqual("(12345 OR 55555) AND !65232", functionCalled(t.itemNumbers, Globals.masterList, ref tmp), "Wrong obj returned.");

functionCalled 处理由其他函数修改的列表,结果你从它得到不同的输出,结果单元测试失败

关于c# - 一起运行时单元测试失败,单独通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com