繁体   English   中英

分别运行时,三个单元测试通过,而一起运行时,只有一个通过

[英]Three Unit tests pass when run separately, only one passes when run together

我有三个测试, FunnyCarSteps.csCarLotMaxSteps.csCarTypeSteps.cs 当运行seperatley时,它们全部通过,但是一起运行时,仅CarLotMaxSteps通过。

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

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

任何帮助是极大的赞赏。

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

这就是为什么您的测试可以正常运行,但同时运行会失败的原因。 一个启动并开始测试,然后第二个出现并更改第一个测试正在使用的数据。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM