gpt4 book ai didi

c# - 如何使用 Nunit 断言每个集合项

转载 作者:行者123 更新时间:2023-11-30 23:15:51 24 4
gpt4 key购买 nike

我正在尝试声明我的集合中的两个项目,因为我的集合中有两个实体。我正在尝试的一种方法就是执行一个 foreach 循环并像下面那样单独断言它们。但是在这种方法中,我在这个集合中的第二个项目会有不同的项目。我的意思是说它通过了集合中的第一个项目而不是其他项目,因为我的第二个项目有不同的值来比较..

如何以这种方式比较我的第二个项目。或者如果您有任何其他想法,请告诉我。

  foreach (var item in result.Entities)
{
Assert.AreEqual("Contractor1", item.ContractorName, "Result not found");
Assert.AreEqual(1234, item.PKey, "Result not found");
Assert.AreEqual("Alex", item.Name, "Result not found");
}

或者我能做的是在 foreach 中编写 if 条件,如果它是第一项,则与此进行比较,否则使用其他值??

所以,这就是我所做的::

  foreach (var item in result.Entities)
{
if (result.Entities.First() == item)
{
// Assert First Item
}
else{
//Assert second list
}

}

但我需要一个更好的解决方案。

最佳答案

您的问题是关于按值测试对象是否相等。

nunit 中有几个内置方法来测试对象集合是否相等。

// Same order, same objects
CollectionAssert.AreEqual(IEnumerable<T> expected, IEnumerable<T> actual)

// Same objects, any order
CollectionAssert.AreEquivalent(IEnumerable<T> expected, IEnumerable<T> actual)

但是只有当您的对象 T 可以按值进行比较时,这种比较才有效。

您可以通过覆盖 Equals 和 GetHashcode 方法来定义对象的比较方式。这是一些基本的东西,您必须学习它才能适应 .Net。在 .Net 中有很多关于平等的话题检查这个 How to best implement Equals for custom types?

关于c# - 如何使用 Nunit 断言每个集合项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42312537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com