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

如何在Visual Studio 2022中为dotnet test传递字符串参数?

问题解答

1. 你提出的命令行传参方式不可行

原因有两点:

  • 仅用[Test]标记但带参数的测试方法,NUnit无法识别为可执行用例——NUnit要求参数化测试必须明确指定参数来源(比如[TestCase])。
  • --filter参数的作用是筛选已存在的测试用例,而非给测试方法传递参数。你写的FullyQualifiedName=QualifyTest.ColorTest("This is my String")格式不符合filter规则,filter只能匹配测试的名称、类别等元数据,不能直接传入参数值。

2. 路径参数的传递(基于正确的参数化方式)

如果使用下文的[TestCase]或[TestCaseSource],路径字符串可以正常传递,只需注意转义:

  • 用@符号避免转义:@"D:\This\is\my\path.txt"
  • 或用双反斜杠转义:"D:\\This\\is\\my\\path.txt"

3. 正确的参数化测试实现方式

方式一:使用[TestCase]

直接在测试方法上标记[TestCase]并指定参数值,适合参数固定、数量少的场景:

using NUnit.Framework;
using System;

namespace QualifyTest
{
    public class ColorTest
    {
        // 直接指定测试参数
        [TestCase("This is my String")]
        [TestCase(@"D:\This\is\my\path.txt")]
        public void MyTest(string myString)
        {
            Console.WriteLine(myString);
        }
    }
}

执行时,dotnet test会自动运行所有[TestCase]定义的用例。如果要执行特定用例,可通过--filter筛选:

# Windows命令行(注意单引号转义参数值)
dotnet test "C:\MyPath\Test.dll" --filter "FullyQualifiedName=QualifyTest.ColorTest('This is my String')"

# PowerShell(用`转义双引号)
dotnet test "C:\MyPath\Test.dll" --filter "FullyQualifiedName=QualifyTest.ColorTest(`"This is my String`")"

方式二:使用[TestCaseSource]

适合参数数量多、需要动态生成参数(比如从文件/数据库读取)的场景:

using NUnit.Framework;
using System;
using System.Collections.Generic;

namespace QualifyTest
{
    public class ColorTest
    {
        // 定义测试数据源:返回参数数组的集合
        public static IEnumerable<object[]> TestParameters()
        {
            yield return new object[] { "This is my String" };
            yield return new object[] { @"D:\This\is\my\path.txt" };
            // 可添加更多参数组合,或从外部读取数据生成
        }

        // 指定数据源
        [TestCaseSource(nameof(TestParameters))]
        public void MyTest(string myString)
        {
            Console.WriteLine(myString);
        }
    }
}

执行逻辑和[TestCase]一致,筛选特定用例的命令也相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:09:53