如何使用XUnit测试比较两个列表

brstkr

我目前正在尝试使用xUnit将两个具有相同项目的列表进行比较,但是在运行时出现错误。

Assert.Equal(expectedList, actualList);

错误:

"Assert.Equal() Failure"
Expected: List<myObject> [myObject { modifier = '+', name = "name", type = "string" }, myObject { modifier = '+', name = "age", type = "int" }]
Actual:   List<myObject> [myObject { modifier = '+', name = "name", type = "string" }, myObject { modifier = '+', name = "age", type = "int" }]

Panoskarajohn

这与对象相等有关。

MyObject没有实现Equals method默认情况下,您获得引用相等性。我假设您有两个不同的对象MyObject

这意味着您的List拥有相似的对象(意味着具有相同的值),它们不是同一引用,这并不重要,因此您的测试会检查这就是为什么它失败

internal class MyObject
{
    {
        public char Modifier { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }

    }
}


            [Fact]
            public void ListMyObject()
            {
                var list1 = new List<MyObject>
                {
                    new MyObject{ }
                };
                var list2 = new List<MyObject>
                {
                    new MyObject{ }
                };

                Assert.Equal(list1, list2); // Fails
            }

当我们更新班级到这个。

internal class MyObject
    {
        public char Modifier { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }
        //When i add this to my class.
        public override bool Equals(object obj)
        {
            return this.Name == ((MyObject)obj).Name;
        }
    }

也如乔纳森·蔡斯(Jonathon Chase)的评论中所述。

对于overrideGetHashCode()方法也是一个好主意最好从继承,IEquatable<T>这样可以避免强制转换。

一切都变成绿色。

        [Fact]
        public void ListMyObject()
        {
            var list1 = new List<MyObject>
            {
                new MyObject{ Name = "H" }
            };
            var list2 = new List<MyObject>
            {
                new MyObject{ Name = "H" }
            };

            Assert.Equal(list1, list2); //Passes
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用while循环比较两个列表

来自分类Dev

如何使用流比较两个列表?

来自分类Dev

如何比较两个对象列表?

来自分类Dev

如何比较两个列表元素?

来自分类Dev

Python:如何比较两个列表

来自分类Dev

如何比较两个列表

来自分类Dev

比较两个列表后如何制作列表

来自分类Dev

如何在Clojure中比较/减去两个列表

来自分类Dev

如何在JUnit中比较两个double列表

来自分类Dev

比较两个列表时如何忽略“ \ n”

来自分类Dev

如何比较两个列表中的项目Python 3.3

来自分类Dev

如何在python中比较两个列表

来自分类Dev

如何比较涉及列表的两个元组的相等性

来自分类Dev

如何在C#中比较两个列表?

来自分类Dev

如何比较R中的两个列表

来自分类Dev

如何比较两个不同的列表类?

来自分类Dev

如何在python中迭代比较两个列表?

来自分类Dev

如何正确比较两个实体列表?

来自分类Dev

如何比较两个列表框

来自分类Dev

如何比较两个相同链接的列表?

来自分类Dev

如何比较两个输入列表的元素?

来自分类Dev

如何比较两个对象列表之间的字段?

来自分类Dev

如何在Python中比较两个以上的列表?

来自分类Dev

如何在javascript中比较两个列表项?

来自分类Dev

我如何比较两个列表中的参数

来自分类Dev

如何比较两个不同列表的每个元素?

来自分类Dev

如何使用XSLT 1.0比较两个逗号分隔的列表并删除匹配的值

来自分类Dev

如何比较两个列表,并使用C#相应地设置像素值?

来自分类Dev

使用LINQ的两个列表的错误比较