.net - VS2010 中的 Assert.AreEqual() 异常

标签 .net unit-testing visual-studio-2010

我对单元测试相当陌生,正在使用 VS2010 来开发和运行我的测试。我有一个简单的测试,如下所示,它只是比较 2 个 System.Data.DataTableReader 对象。我知道它们是相等的,因为它们都是使用相同的对象类型、相同的输入文件创建的,并且我已经验证了这些对象“看起来”相同。

我意识到我可能正在处理几个问题,一个是这是否是 Assert.AreEqual 的正确使用,甚至是测试此场景的正确方法,另一个是我正在处理的主要问题这就是为什么此测试因以下异常而失败的原因:

Failed 00:00:00.1000660 0 Assert.AreEqual failed. 
Expected:<System.Data.DataTableReader>. Actual:<System.Data.DataTableReader>. 

这是失败的单元测试代码:

public void EntriesTest()
{
    AuditLog target = new AuditLog(); 

    target.Init();

    DataSet ds = new DataSet();
    ds.ReadXml(TestContext.DataRow["AuditLogPath"].ToString());
    DataTableReader  expected = ds.Tables[0].CreateDataReader();
    DataTableReader actual = target.Entries.Tables[0].CreateDataReader();
    Assert.AreEqual<DataTableReader>(expected, actual);
}

任何帮助将不胜感激!

最佳答案

据我所知,DataTableReader 不会重写 Equals 方法;因此,调用 Equals 将进行引用相等性检查;两个单独的引用,失败的相等。

你想要的是集合断言。调用CollectionAssert.AreEquivalent()反而。如果顺序很重要,请使用 CollectionAssert.AreEqual() .

关于.net - VS2010 中的 Assert.AreEqual() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2898008/

相关文章:

c# - 在 C# 中将 int 转换为 4 字节的最快方法

c# - WCF 调用,内部函数速度慢,但直接调用函数时速度快

c# - MSTest期间的终结器中的NullReferenceException

c# - 将字符串数组绑定(bind)到 DropDownList?

.net - 如何在Azure中发现角色实例?

c++ - 用于 Google 测试的 CMake

python - 有没有开源工具可以自动为遗留代码生成测试用例?

python - 类型错误 : 'module' object is not callable when running unittest

c# - 创建 X.xaml 和 X.xaml.cs 文件 vs 应该理解它们是 xaml 和代码隐藏

c# - 使用已经打开的数据库连接