You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中用Nunit TestCase特性测试锯齿数组参数?

如何用锯齿数组创建NUnit测试用例

你的现有代码需要调整TestCaseSource的返回结构,因为NUnit要求TestCaseSource返回的是测试用例参数集合的数组,而不是直接返回锯齿数组本身。以下是正确的实现方式:

单测试用例(单个锯齿数组)

using NUnit.Framework;

public class JaggedArrayTests
{
    static public object[] JaggedValues()
    {
        int[][] jagged = new int[3][];
        jagged[0] = new[] { 1, 1, 1, 0 };
        jagged[1] = new[] { 0, 5, 0, 1 };
        jagged[2] = new[] { 2, 1, 3, 10 };
        
        // 将锯齿数组包装为单个测试用例的参数集合
        return new object[] { jagged };
    }

    // 测试方法参数类型与数据源匹配
    [TestCaseSource(nameof(JaggedValues))]
    public void TestYourJaggedFunction(int[][] input)
    {
        // 在这里编写你的测试逻辑,比如调用待测试的功能方法并验证结果
        // 示例:
        // var result = YourTargetClass.YourJaggedArrayMethod(input);
        // Assert.AreEqual(expectedOutput, result);
    }
}

多测试用例(多个不同锯齿数组)

如果需要用多个锯齿数组作为测试用例,只需在返回的object[]中添加多个元素:

static public object[] MultipleJaggedValues()
{
    // 第一个测试用例
    int[][] case1 = new int[3][];
    case1[0] = new[] { 1, 1, 1, 0 };
    case1[1] = new[] { 0, 5, 0, 1 };
    case1[2] = new[] { 2, 1, 3, 10 };

    // 第二个测试用例
    int[][] case2 = new int[2][];
    case2[0] = new[] { 0, 0 };
    case2[1] = new[] { 1, 2, 3 };

    // 返回包含多个测试用例的数组
    return new object[] { case1, case2 };
}

关键注意点

  • TestCaseSource的返回类型必须是object[],每个元素对应一个测试用例的参数列表(如果测试方法只有一个参数,元素就是该参数本身)。
  • 测试方法的参数类型必须和数据源中对应元素的类型严格匹配(这里是int[][])。

内容的提问来源于stack exchange,提问作者Leonardo Sasso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:03:12