gpt4 book ai didi

c# - NUnit:断言三个或更多值相同

转载 作者:行者123 更新时间:2023-11-30 16:09:34 25 4
gpt4 key购买 nike

我需要断言三个值相同。

比如我需要这样的东西

Assert.AreEqual(person1.Name, person2.Name, person3.Name);

Assert.That(person1.Name, Is.EqualTo(person2.Name), Is.EqualTo(person3.Name));

这两个方法只允许比较两个值(前两个参数),第三个参数是输出消息。

我知道 CollectionAssert,但我不想只为这种情况创建 IEnumerables

是否可以在不使用集合的情况下在 NUnit 中比较两个以上的参数?一些接受 params[] 或其他东西的方法。

最佳答案

您可以做 2 个单独的断言:

Assert.AreEqual(person1.Name, person2.Name);
Assert.AreEqual(person1.Name, person3.Name);

或者您可以创建一个辅助函数:

public static class AssertEx
{
public static void AllAreEqual<T>(params T[] items)
{
for (int i = 1; i < items.Length; i++)
{
Assert.AreEqual(items[0], items[i]);
}
}
}

你可以这样使用:

[Test]
public void TestShouldPass()
{
var person1 = new Person { Name = "John" };
var person2 = new Person { Name = "John" };
var person3 = new Person { Name = "John" };

AssertEx.AllAreEqual(person1.Name, person2.Name, person3.Name);
}

[Test]
public void TestShouldFail()
{
var person1 = new Person { Name = "John" };
var person2 = new Person { Name = "Bob" };
var person3 = new Person { Name = "John" };

AssertEx.AllAreEqual(person1.Name, person2.Name, person3.Name);
}

关于c# - NUnit:断言三个或更多值相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420050/

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