首页 > 解决方案 > 如何在 nunit TestCases 中使用元组?

问题描述

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

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

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

    }

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

标签: c#nunitvaluetuple

解决方案


您可以使用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属性仅支持常量值


推荐阅读