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