三个单元测试在单独运行时通过,只有一个在一起运行时通过



我有三个测试,FunnyCarSteps.cs、CarLotMaxSteps.cs和CarTypeSteps.cs。当单独运行时,它们都通过了,但当一起运行时,只有CarLotMax Steps通过。

CarTypeSteps.cs在第49行失败,出现lambda方法无可用源错误。FunnyCarSteps.cs在第19行失败,出现索引超出范围错误。

我是单元测试的新手,不明白发生了什么。

非常感谢您的帮助。

由于Program.Mainstatic,因此您的CarList可能也是静态的。NUnit并行运行测试,因此每个测试几乎在同一时间运行,并且每个测试都在清除列表并添加到列表中。

这就是为什么测试本身运行良好,但在一起运行时失败的原因。一个启动并开始测试,然后第二个出现并更改第一个测试所使用的数据。

您需要从Program中除main之外的所有内容中删除static。理想情况下,您应该将所有的car列表代码重构为一个新的非静态类。程序是用来运行你的程序的,它不应该和汽车有任何关系。您应该在Main中创建CarLot(或其他)类并执行它,而不是向Program添加属性。

另一个选项是将属性[Parallelizable(ParallelScope.None)]添加到每个测试类中。这将导致它们一次运行一个。这将解决测试中的问题,但除了简单的练习之外,它并不能解决代码不正确的事实。

相关内容

最新更新