[英]Condition if for Nunit assert
我需要通過NUnit的Assert.AreEqual
比較兩個List
。 如果此語句為假(列表不相同)-那么我需要在列表中查找不相同的元素。
如何使用If語句獲取知識-聲明返回true
或false
?
看起來nunit CollectionAssert.AreEquivalent正是您要尋找的。
此方法在集合之間進行比較。 如果發現不匹配,則該方法將拋出具有差異的異常。
這是一個可能的解決方案。
[Test]
public void TestMethod1()
{
List<int> a = new List<int>();
List<int> b = new List<int>();
//Fake data
a.Add(1);
b.Add(2);
b.Add(2);
Assert.IsTrue(AreEquals(a,b), GetDifferentElements(a,b));
}
private string GetDifferentElements(List<int> a, List<int> b)
{
if (AreEquals(a, b))
{
return string.Empty;
}
if (a.Count != b.Count)
{
return "The two lists have a different length";
}
StringBuilder s = new StringBuilder();
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
s.Append(i.ToString() + " ");
}
}
return string.Format("Elements at indexes {0} are different", s.ToString());
}
private bool AreEquals(List<int> a, List<int> b)
{
if (a.Count != b.Count)
{
return false;
}
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
return false;
}
}
return true;
}
UPDATE
當然,我不知道所接受答案中提供的CollectionAssert.AreEquivalent方法。 當然,這是一個更好的解決方案!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.