单元测试中的循环

问题描述 投票:18回答:3

我们可以在单元测试中有一个循环吗?

我的方法返回一个IEnumerable<IEnumerable>,我想对该创建IEnumerable<IEnumerable>的逻辑进行单元测试。基本上,我想测试IEnumerable中的元素计数是否符合预期。

我无法在没有循环语句的情况下找到测试内部IEnumerable的替代方法。如果这是一个好习惯,请告诉我。

c# unit-testing nunit for-loop ienumerable
3个回答
26
投票

没有技术原因,您不能这样做。一个单元测试中可以有多个Assert语句。在循环中具有Assert语句只是在测试中具有多个Assert语句的简便方法。


8
投票

避免在测试中编写循环的一个原因是使测试一目了然且易于阅读。因为您已经用NUnit标记了问题,并且您说只想测试元素计数是否符合预期,所以请考虑使用NUnit Constraints进行声明。

例如,


2
投票

是的,您可以在单元测试中使用循环,但要小心。如Alex York所述,如果您测试one


0
投票

有一个CollectionAssertMicrosoft.VisualStudio.TestTools.UnitTesting),这更加方便。 :-)

© www.soinside.com 2019 - 2024. All rights reserved.