【问题标题】:Using Assert to compare two objects使用 Assert 比较两个对象
【发布时间】:2010-05-06 03:51:41
【问题描述】:

为我的项目编写测试用例,我需要的一项测试是测试删除。这可能不是完全正确的方法,但我偶然发现了一些对我来说没有意义的东西。

代码是这样的:

[Test]
private void DeleteFruit()
{
    BuildTestData();
    var f1 = new Fruit("Banana",1,1.5);
    var f2 = new Fruit("Apple",1,1.5);
    fm.DeleteFruit(f1,listOfFruit);
    Assert.That(listOfFruit[1] == f2);
}

现在我在第 5 行创建的水果对象是我知道在删除 f1 后应该在那个位置(使用这个特定数据集)的对象。

另外,如果我坐下来调试并手动比较对象 listOfFruit[1] 和 f2,它们是相同的。但是该 Assert 行失败了。什么给了?

编辑:

获取以下信息:

-Assert.Equals 不应用于断言

-Assert.AreEqual(fruit1, fruit2); Failed: Expected <FruitProject.Fruit> But was: <FruitProject.Fruit>

-fruit1.Equals(fruit2)fruit1==fruit2 都失败了??

【问题讨论】:

  • 我认为 assertEquals 会更好。
  • 看起来正是我要找的东西...但是Assert.Equals should not be used for Assertions... whaaat?
  • Also Assert.AreEqual(fruit1, fruit2); Failed: Expected But was: 又是这个比较参考
  • fruit1.Equals(fruit2)fruit1==fruit2 都失败了??
  • @baron: 看到这个关于那个古怪的执行信息的解释:stackoverflow.com/a/11584492/79646

标签: nunit testing collections assert unit-testing


【解决方案1】:

==比较引用,由于listOfFruit[1]和f2的引用不一样,所以失败

C# difference between == and Equals()

【讨论】:

  • 您可以通过在 Fruit 上实现 IEquatable 来解决您的问题 :)
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2019-08-02
  • 2014-01-26
  • 2012-08-17
相关资源
最近更新 更多