运行NUnit测试时无法找到ITestEventListener的问题求助
NUnit引擎扩展加载失败:无法生成日志文件的解决方案
问题结论
克隆该扩展仓库并执行测试后,不会在./UnitTests/bin/Debug/net9.0/NUnitExtensionFileLogger.txt路径生成文本文件,因为你的NUnit引擎扩展存在几处配置问题,导致引擎无法识别并加载它。
问题根源与修复步骤
1. 测试项目未引用扩展项目
你的NUnitExtension扩展项目未被UnitTests测试项目引用,扩展程序集无法被复制到测试执行目录,NUnit引擎找不到扩展文件。
修复:在UnitTests.csproj中添加项目引用:
<ItemGroup> <ProjectReference Include="..\NUnitExtension\NUnitExtension.csproj" /> </ItemGroup>
2. 目标框架版本不兼容
你使用的NUnit.Engine 3.19.2版本最高兼容至.NET 6,但扩展项目目标框架设置为.NET 9,高版本框架编译的程序集无法被低版本引擎加载。
修复:修改NUnitExtension.csproj的目标框架:
<TargetFramework>net6.0</TargetFramework>
3. 日志文件路径不符合预期
当前代码会在执行dotnet test的工作目录生成日志,而非测试项目的输出目录。若要生成到指定路径,需调整路径逻辑:
var assemblyDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); var logPath = Path.Combine(assemblyDir, $"{nameof(NUnitExtension)}.{nameof(FileLogger)}.txt"); File.AppendAllLines(logPath, [report]);
4. 验证扩展加载状态
启用NUnit引擎调试日志,确认扩展是否被识别:
dotnet test --diag:test.log
查看生成的test.log,若未找到FileLogger相关加载记录,说明扩展仍未被引擎识别。
原问题提供的相关代码文件
FileLogger.cs
using NUnit.Engine; using NUnit.Engine.Extensibility; namespace NUnitExtension; [Extension(EngineVersion="3.4")] public class FileLogger : ITestEventListener { public void OnTestEvent(string report) { File.AppendAllLines($"{nameof(NUnitExtension)}.{nameof(FileLogger)}.txt", [report]); } }
NUnitExtension.addins
*.dll
NUnitExtension.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="NUnit.Engine" Version="3.19.2" /> </ItemGroup> <ItemGroup> <None Update="NUnitExtension.addins"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> </Project>
内容的提问来源于stack exchange,提问作者Dave Rant
相关产品推荐
相关产品推荐

