我有三个测试,FunnyCarSteps.cs,CarLotMaxSteps.cs和CarTypeSteps.cs。当运行seperatley时,它们都会通过,但是当一起运行时,只有CarLotMaxSteps通过。
CarTypeSteps.cs在第49行失败,使用lambda方法没有源可用错误。 FunnyCarSteps.cs在第19行失败,索引超出范围错误。
我不熟悉单元测试,也不了解发生了什么。
非常感谢任何帮助。
答案 0 :(得分:3)
由于Program.Main
为static
,您的CarList
可能也是静态的。 NUnit并行运行测试,因此每个测试几乎同时运行,每个测试都清除列表并同时添加它。
这就是为什么你的测试可以自行运行,但是在一起运行时会失败。一个启动并开始测试,然后第二个出现并更改第一个测试正在使用的数据。
除了main之外,您需要从Program
中的所有内容中删除静态内容。理想情况下,您应该将所有汽车列表代码重构为新的非静态类。程序用于运行程序,它不应该与汽车有任何关系。您应该在Main中创建CarLot(或其他)类并执行它,而不是向Program添加属性。
另一个选择是将属性[Parallelizable(ParallelScope.None)]
添加到每个测试类中。这将导致他们一次运行一个。这将解决您的测试问题,但它并不能解决您的代码不仅仅是一个简单的练习错误的事实。