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

.NET Core编程运行NUnit测试报错及TestCaseSource相关问题咨询

问题1:RemoteTestRunner加载测试程序集报错

异常原因

你当前使用的RemoteTestRunner属于NUnit V2版本的执行API,该版本仅适配.NET Framework,依赖.NET Framework专属的Remoting通信组件。而System.Runtime.Remoting.Messaging.ILogicalThreadAffinative是Remoting组件的专属类型,.NET Core/.NET 5+已经完全移除了Remoting相关实现,所以加载时会抛出类型找不到的异常。

解决方案

弃用NUnit V2的API,改用适配.NET Core的NUnit 3 Engine组件,操作步骤如下:

  1. 给Web API项目安装NUnit.Engine NuGet包
  2. 替换原有执行逻辑,示例代码如下:
using NUnit.Engine;
using System.Xml;

[HttpPost]
[Route("/api/TestSuiteRun/Run")]
public IActionResult RunTestSuite([FromBody] AutomationAPI.Models.TestSuite testSuite)
{
    try
    {
        // 初始化NUnit引擎
        using ITestEngine testEngine = TestEngineActivator.CreateInstance();
        // 构造测试包,支持传入多个测试dll路径
        var testPackage = new TestPackage(@"C:\Desktop\Automation-v2\Automation-v2\bin\Debug\netcoreapp3.1\Automation-v2.dll");
        // 可选配置:指定单线程运行、筛选要执行的测试名称等
        testPackage.AddSetting("NumberOfTestWorkers", 1);
        
        // 构造测试过滤器,只运行传入的测试名称集合
        var testFilterBuilder = new TestFilterBuilder();
        foreach (var testName in testSuite.TestNames)
        {
            testFilterBuilder.Include(testName);
        }

        using var testRunner = testEngine.GetRunner(testPackage);
        // 执行测试,返回XML格式的结果
        XmlNode testResult = testRunner.Run(null, testFilterBuilder.GetFilter());
        
        // 这里可自行解析XML结果,转换为业务需要的返回结构
        return Ok(testResult.OuterXml);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return StatusCode(500, ex.Message);
    }
}

额外注意事项

  • Web API进程需要有测试dll所在目录的读取权限,以及Playwright浏览器驱动的执行权限
  • 测试项目的Serilog、Playwright配置要确保能在Web API的进程上下文正常加载,避免运行时初始化失败
问题2:RemoteTestRunner是否支持动态传递TestCaseSource参数

不支持。
TestCaseSource的数据源是在测试用例发现阶段(也就是测试dll被加载、Runner枚举所有测试用例的时候)就已经从代码定义的提供类中读取完成,完全依赖测试程序集编译时的静态定义,无法在运行时通过Runner动态传入替换。
如果需要动态传入测试参数,可改用如下实现方式:

  • 测试用例执行时主动读取上下文的参数(比如存到进程内缓存、配置文件、数据库中)
  • 改用NUnit的动态参数构造方式,在测试代码中实现运行时参数读取逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:33:01