Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nunit断言的条件if_C#_Nunit_Assert - Fatal编程技术网

C# Nunit断言的条件if

C# Nunit断言的条件if,c#,nunit,assert,C#,Nunit,Assert,我需要比较NUnit的Assert.AreEqual的两个列表。如果该语句为false(列表不相同),那么我需要在列表中查找不相同的元素 如何使用If语句来表示know-Assert返回true或false?下面是一个可能的解决方案 [Test] public void TestMethod1() { List<int> a = new List<int>(); List<int> b = new Lis

我需要比较NUnit的
Assert.AreEqual的两个
列表
。如果该语句为false(列表不相同),那么我需要在列表中查找不相同的元素


如何使用If语句来表示know-Assert返回
true
false

下面是一个可能的解决方案

    [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;
    }
[测试]
公共void TestMethod1()
{
列表a=新列表();
列表b=新列表();
//假数据
a、 增加(1);
b、 增加(2);
b、 增加(2);
Assert.IsTrue(AreEquals(a,b),getDifferentialElements(a,b));
}
私有字符串GetDifferentElements(列表a、列表b)
{
如果(a等于(a,b))
{
返回字符串。空;
}
如果(a.计数!=b.计数)
{
返回“两个列表的长度不同”;
}
StringBuilder s=新的StringBuilder();
for(int i=0;i
更新


当然,我不知道公认答案中提供的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;
    }
[测试]
公共void TestMethod1()
{
列表a=新列表();
列表b=新列表();
//假数据
a、 增加(1);
b、 增加(2);
b、 增加(2);
Assert.IsTrue(AreEquals(a,b),getDifferentialElements(a,b));
}
私有字符串GetDifferentElements(列表a、列表b)
{
如果(a等于(a,b))
{
返回字符串。空;
}
如果(a.计数!=b.计数)
{
返回“两个列表的长度不同”;
}
StringBuilder s=新的StringBuilder();
for(int i=0;i
更新

当然,我不知道公认答案中提供的CollectionAssert.AreEquivalent方法。这当然是一个更好的解决方案

看来nunit正是你想要的

此方法用于在集合之间进行比较。 如果发现不匹配,则该方法将抛出差异异常。

看起来,nunit正是您要查找的内容

此方法用于在集合之间进行比较。
如果发现不匹配,则该方法将抛出差异异常。

只有在断言为true时,代码才会继续。。。您不需要if语句。如果断言失败,则不会执行其他代码。您需要更改策略,您希望实现什么?只有在断言为true时,代码才会继续。。。您不需要if语句。如果断言失败,则不会执行其他代码。你需要改变你的策略,你想实现什么?在你回答后,我删除了我手工制作的一个。学习新东西很好,谢谢:-)@PaoloCosta欢迎!这就是我们职业的伟大之处——每天我们都学到新东西:-)这是很好的解决方案。谢谢,但是如果我有一个包含3000个元素的列表呢?Areequalent返回两个列表,其中包含差异和列表中的所有元素。也许你们知道如何从等值输出中过滤元素差异?哦,对不起,这个方法只返回列表中的10个值。非常感谢你的回答!!这对我来说是一个很好的解决方案@PaoloCosta-谢谢你。你的回答也很有用!我把他添加到我的知识行李中(你的回答之后,我删除了我手工制作的一个。学习新东西很好,谢谢:-)@PaoloCosta欢迎!这就是我们职业的伟大之处——每天我们都学到新东西:-)这是很好的解决方案。谢谢,但是如果我有一个包含3000个元素的列表呢?Areequalent返回两个列表,其中包含差异和列表中的所有元素。也许你们知道如何从等值输出中过滤元素差异?哦,对不起,这个方法只返回列表中的10个值。非常感谢你的回答!!这对我来说是一个很好的解决方案@PaoloCosta-谢谢你。你的回答也很有用!我把他添加到我的知识行李中=)