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

如何在NUnit Test Engine运行期间获取测试执行日志

获取NUnit单测试执行日志的可行方案

针对你遇到的并行UI测试挂起、无法实时获取单测试执行日志的问题,提供以下几种解决思路:

1. 注册实时测试事件监听器

通过NUnit Test Engine的ITestEventListener接口,可以实时捕获每个测试的执行节点(开始、结束、跳过等),精准记录测试生命周期。

示例代码:

// 自定义事件监听器
public class TestExecutionTracker : ITestEventListener
{
    public void OnTestEvent(string eventXml)
    {
        var xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(eventXml);
        
        // 提取测试核心信息
        var testCaseNode = xmlDoc.SelectSingleNode("//test-case");
        if (testCaseNode == null) return;

        var fullName = testCaseNode.Attributes["fullname"]?.Value;
        var result = testCaseNode.Attributes["result"]?.Value;
        var startTime = testCaseNode.Attributes["start-time"]?.Value;
        var endTime = testCaseNode.Attributes["end-time"]?.Value;

        // 写入日志(建议用异步写入避免IO阻塞)
        var logContent = $"[{DateTime.Now:HH:mm:ss.fff}] 测试: {fullName} | 状态: {result ?? "执行中"} | 开始: {startTime} | 结束: {endTime}\n";
        await File.AppendAllTextAsync("TestStepLogs.txt", logContent);
    }
}

// 在Runner中注册监听器
var testRunner = _package.CreateRunner();
testRunner.RegisterTestEventListener(new TestExecutionTracker());
testRunner.Run(null, TestFilter.Empty);

2. 捕获测试内自定义输出

在测试代码中用TestContext.WriteLine()输出关键步骤日志,再在Runner中开启输出捕获,结合事件监听器关联到对应测试:

先添加Runner设置:

_package.AddSetting(FrameworkPackageSettings.CaptureTestOutput, true);

之后在ITestEventListener的事件解析中,提取//test-case/output节点内容,就能拿到测试内的自定义步骤日志,便于定位挂起前的操作。

3. 修复InternalTrace的写入问题

你当前手动创建StreamWriter可能因文件锁定导致worker挂起,改用NUnit内置的路径设置自动管理日志:

_package.AddSetting(FrameworkPackageSettings.InternalTraceLevel, "Debug");
_package.AddSetting(FrameworkPackageSettings.InternalTracePath, "NunitInternalLogs.txt");

Debug级别会输出worker调度、测试启停的细节,有助于排查并行资源冲突。

4. 排查并行UI资源冲突

UI测试挂起多因并行执行时的资源竞争(如多worker操作同一浏览器实例、控件未释放),可先将NumberOfTestWorkers设为1验证是否是并行导致,再逐步增加数量结合日志定位冲突用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:05:29