2012-11-21 47 views
1

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

回答

1

我想你可能需要使用CollectionAssert。這使您可以驗證一個值或一組值是否包含在另一個值中。

CollectionAssert.Contains(new[] { 1, 2, 3 }, 2); 
CollectionAssert.IsSubsetOf(new[] {1, 2 }, new[] {1, 2, 3, 4}); 

您可能注意到的是,第一方法是檢查在第一IEnumerable的第二個參數,第二個是斷言的第一個參數(IEnumerable)是第二個參數的子集,也IEnumerable

+0

感謝克里斯彌撒書 –

1

由於NUnit 2.4,the constraint model已可用,它允許連詞和disjuntions。這爲相同的事情提供了更多可讀的斷言。

此外,它包含許多有用的快捷方式,主要在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));