[英]How to assert that two list contains elements with the same public properties in NUnit?
[英]How to assert two collection that contains same data
我想斷言最終List
與我的期望List
。 我的預期列表如下所示
List<GroupOfStuff> expectedResult = new List<GroupOfStuff>();
List<Stuff> stuffList = new List<Stuff>();
Stuff stuff = new Stuff
{
DeliveryDays = 3
};
stuffList.Add(stuff);
GroupOfStuff groupByCountry = new GroupOfStuff
{
Country = "Australia",
StuffDetails = stuffList // List<Stuff> type
};
expectedResult.Add(groupByCountry);
而且我有實際作為List<GroupOfStuff> actual = obj.Result ()
我瀏覽了這篇文章 。 但是我得到了另一個GroupOfStuff
類,其中包含另一個List
成員。 因此,shell我對GroupOfStuff
類的每個成員分別進行斷言,或者提出什么建議,即shell如何斷言它們。
我想這是用於單元測試嗎? 然后,您可以在microsoft.visualstudio.testtools.unittesting.collectionassert( https://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.collectionassert.aspx )的命名空間中使用此CollectionAssert.AreEqual
從.net 4.0開始可以在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll中找到的
我認為您可以為此使用擴展方法Enumerable.SequenceEqual<TSource>()
。 小示例如何使用它:
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void SequenceEqualEx1()
{
Pet pet1 = new Pet { Name = "Turbo", Age = 2 };
Pet pet2 = new Pet { Name = "Peanut", Age = 8 };
// Create two lists of pets.
List<Pet> pets1 = new List<Pet> { pet1, pet2 };
List<Pet> pets2 = new List<Pet> { pet1, pet2 };
bool equal = pets1.SequenceEqual(pets2);
Console.WriteLine(
"The lists {0} equal.",
equal ? "are" : "are not");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.