c# - N单位。索引 [0] 处的值不同

标签 c# .net winforms unit-testing nunit

我正在运行测试,但如果失败我不知道为什么:

Proj.Tests.StatTests.GetResults_RegularPage_ReturnListOfResults:
  Expected and actual are both <System.Collections.Generic.List`1[Proj.Classes.StatResult]> with 50 elements
  Values differ at index [0]
  Expected: <test;98318>
  But was:  <test;98318>

如您所见,值是相同的。 这是一些代码:

public class StatResult
    {
        public string word { get; set; }
        public UInt64 views { get; set; }

        public override string ToString()
        {
            return String.Format("{0};{1}", word, views);                
        }
    }    

    [Test]
    public void GetResults_RegularPage_ReturnListOfResults()
    {
        // Arrange            
        WordStat instance = new WordStat(Constants.WordStatRegularPage);
        // Act
        List<StatResult> results = instance.GetResults();
        // Assert
        Assert.AreEqual(results, new List<StatResult>
        {
            new WordStatResult { word ="test", views = 98318},
            new WordStatResult { word ="test board", views = 7801},
            //... I shorted it
        }

我尝试了很多方法,甚至将测试样本直接放到类里面,但无论如何都行不通。 请帮忙!

最佳答案

问题在于 NUnit 测试 StatResult 的两个实例是否相等的方式。因为您没有实现任何形式的相等比较运算符,所以相等检查默认为实例的引用。因为它们是两个不同的实例,所以它们的引用是不同的。

参见 this article有关在对象中实现平等的更多信息。

关于c# - N单位。索引 [0] 处的值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685639/

相关文章:

c# - 捕获进度条值 onMouseClick

c# - 服务器客户端发送/接收简单文本

c# - 为什么这个带 IDENTITY_INSERT 的 EF 插入不起作用?

C# 简单倒计时-我做错了什么?

c# - DateTime.AddDays 与 Calendar.AddDays

c# - EF - "Update-Database"导致序列包含多个元素

c# - 通过 WebBrowser 控件取消选中网页中的复选框

c# - jQuery AJAX 文件上传到 WCF Web 服务在大数据上失败

c# - 覆盖 ToString() 并添加到 ListBox C#

.net - 如何增加WinForms中复选框的大小?