簡體   English   中英

Nunit斷言的條件

[英]Condition if for Nunit assert

我需要通過NUnit的Assert.AreEqual比較兩個List 如果此語句為假(列表不相同)-那么我需要在列表中查找不相同的元素。

如何使用If語句獲取知識-聲明返回truefalse

看起來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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM