在nunit中,假设我们要返回的特定函数有多个实际值,我应该如何构造断言函数?我应该使用哪种功能?
例如:
int function(..) {
.
.
.
a = some_operation();
if (a == 0)
result = 0;
else if (a == some_predefined_value)
result = 1;
else if (a == some_predefined_value)
result = 2;
else
correct_usage();
return result;
}
答案 0 :(得分:1)
我想您可能想要使用CollectionAssert
。这使您可以验证一个值或一组值是否包含在另一个值中。
CollectionAssert.Contains(new[] { 1, 2, 3 }, 2);
CollectionAssert.IsSubsetOf(new[] {1, 2 }, new[] {1, 2, 3, 4});
您可能会注意到第一个方法是检查第一个IEnumerable中的第二个参数,第二个方法断言第一个参数(IEnumerable
)是第二个参数的子集,也是{{1} }。
答案 1 :(得分:1)
自NUnit 2.4以来,the constraint model已经可用,它允许连词和分离。这允许对同一事物使用更可读的断言。
此外,它还包含许多有用的快捷方式,主要位于Is
和Has
类。
使用流畅式断言
// These are equivalent
Assert.That(function(), Is.EqualTo(0) | Is.EqualTo(1) | Is.EqualTo(2));
Assert.That(function(), Is.AtLeast(0) & Is.AtMost(3));