如何在nunit测试用例中使用元组?

5

我试图使用元组指定nUnit的测试用例,但在VisualStudio中出现编译器错误。

以下简单示例演示了我的尝试:

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

    }

如果这是可能的,我还缺少什么?


这不仅适用于nunit,而是属性的一般限制:只有非常特定类型的常量值可以用作属性参数(请参见https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/attributes)。 - Klaus Gütter
1个回答

7
你可以使用TestCaseSource属性,并指定IEnumerable<(int, int)[]>作为值源。
每个IEnumerable项代表传递给测试方法的一组参数。在你的情况下,它是两个元组,因此,您每次应该返回它们的数组以通过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属性仅支持常量值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接