如何断言多个实际值?

时间:2012-11-21 11:12:33

标签: nunit

在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;
}

2 个答案:

答案 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已经可用,它允许连词和分离。这允许对同一事物使用更可读的断言。

此外,它还包含许多有用的快捷方式,主要位于IsHas类。

使用流畅式断言

// These are equivalent
Assert.That(function(), Is.EqualTo(0) | Is.EqualTo(1) | Is.EqualTo(2));
Assert.That(function(), Is.AtLeast(0) & Is.AtMost(3));