说我有一个我想测试的方法:
public Cars[] GetCars();
我想测试一下这个方法返回的数组至少包含一辆“Mustang”类型的车。
我怎么会这样做?
目前我的代码如下:
[Test]
public void GetCars_ReturnsMustangs()
{
Cars[] cars = GetCars();
foreach(Car car in cars)
{
Assert.IsTrue(Car.Type == "Mustang");
}
}
虽然这可以作为一个测试,据我所知,我知道在测试中放置循环不是一个好主意吗?
有人可以提出更好的选择吗?
谢谢!
答案 0 :(得分:4)
Linq会成为一个选择
using System.Linq
[Test]
public void GetCars_ReturnsMustangs()
{
Cars[] cars = GetCars();
Assert.IsTrue(cars.Any(c => c.Type == "Mustang"));
}
<强>编辑:强>
这是一篇很棒的文章,介绍何时使用Count()与何时使用Any()
答案 1 :(得分:3)
这样的事情可以解决问题,只需确保添加“使用System.Linq;”
[Test]
public void GetCars_ReturnsMustangs()
{
Cars[] cars = GetCars();
Assert.IsTrue(cars.Where(c => c.Type == "Mustang").Count() > 0);
}
(该代码尚未针对语法错误进行测试,但应该可以正常工作)
修改:根据@ John的评论将.Count() > 0
替换为.Any()
答案 2 :(得分:3)
怎么样:
Assert.IsTrue(cars.Any(c => c.Type == "Mustang"));
答案 3 :(得分:1)
使用Gallio/MbUnit,您可以使用Assert.Exists
:
Assert.Exists(cars, x => x.Type == "Mustang");