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

NUnit测试报错:参数过多,如何将字符串数组作为单个参数传入?

解决NUnit中字符串数组作为测试数据被拆分的问题

问题原因

NUnit的TestCaseData构造函数默认会将传入的数组拆解为多个独立参数,而你的测试方法CheckRoles只接受一个string[]类型的参数,因此触发了"Too many arguments provided, provide at most 1 arguments"的错误。

解决方案

需要将读取到的字符串数组包装在一个object[]中,明确告诉NUnit把它当作单个参数传入测试方法,而非拆分数组元素。

修正后的RolesData方法代码:

public static IEnumerable<TestCaseData> RolesData()
{
    // 将字符串数组包装进object数组,避免被NUnit拆解
    yield return new TestCaseData(new object[] { GetDataParser().ExtractDataArray("name") });
}

完整可运行代码示例

测试方法保持原有逻辑即可:

[Test, TestCaseSource(nameof(RolesData))]
public void CheckRoles(string[] rolesData)
{
   foreach (var role in rolesData)
   {
     Console.WriteLine(role);
   }
}

数据提取方法无需修改:

public String[] ExtractDataArray(String tokenName)
{
  String myJsonString = File.ReadAllText("../../../Test Data/Login.json");
  var jsonObject = JToken.Parse(myJsonString);
  List<String> roleList =  jsonObject.SelectTokens(tokenName).Values<String>().ToList();
  return roleList.ToArray();
}

为什么之前的尝试无效

你之前的代码new[] { "name" }只是创建了一个包含单个字符串"name"的数组,并没有把从JSON中读取到的角色数组包装起来,因此无法解决参数被拆分的核心问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:54:27