c# - 我如何在 nunit 测试用例中使用元组?

标签 c# nunit valuetuple

我正在尝试使用元组指定 nUnit 测试用例,但我在 VisualStudio 中遇到编译器错误。

这个简单的例子演示了我正在尝试做的事情:

    [TestCase((1, 2), (3, 5))]
    public void TestRangeOverlaps((int start, int end) firstRange, (int start, int end) secondRange)
    {

    }

如果这是可能的,我错过了什么?

最佳答案

您可以使用 TestCaseSource 属性并指定 IEnumerable<(int, int)[]>为值(value)来源。

每个 IEnumerable item 表示传递给测试方法的一组参数。在您的情况下,它是两个元组,因此您应该每次都返回一个数组以传递给 TestRangeOverlaps

[Test]
[TestCaseSource(nameof(Tuples))]
public void TestRangeOverlaps((int start, int end) firstRange, (int start, int end) secondRange)
{
}

public static IEnumerable<(int, int)[]> Tuples
{
    get
    {
        yield return new[] { (1, 2), (3, 5) };
    }
}

TestCase属性只支持常量值

关于c# - 我如何在 nunit 测试用例中使用元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61910839/

相关文章:

c# - 如何显示转换后的字符串

c# - 比较两个字符串时如何不包含换行符

c# - 如何设置私有(private)构造函数?

c# - Assert.IsInstanceOfType 无法从对象转换为 System.Type

c# - 如何使用 3 维键创建字典

c# - 将数组对转换为数组对(如果可能,使用 LINQ)

c# - 从缓存对象转换 ValueTuple

c# - 无法在 WCF 中序列化字节数组

c# - 为什么此 F# 代码比等效的 C# 代码慢?

c# - NUnit 测试运行顺序