使用FluentAssertions时如何减少冗余的堆栈跟踪输出?
屏蔽FluentAssertions冗余堆栈跟踪的方案
- 方案1:FluentAssertions内置堆栈过滤配置
在测试项目中添加全局初始化代码,直接过滤指定命名空间的堆栈帧,示例代码如下:
[System.Runtime.CompilerServices.ModuleInitializer] public static void ConfigureFluentAssertions() { // 过滤FluentAssertions本身的堆栈 AssertionOptions.StackTraceFilter.AddNamespace("FluentAssertions"); // 可按需添加其他要过滤的系统/第三方库命名空间 AssertionOptions.StackTraceFilter.AddNamespace("System"); AssertionOptions.StackTraceFilter.AddNamespace("Microsoft"); }
- 方案2:dotnet test命令参数过滤
在原有持续测试命令中添加日志参数,自动过滤第三方库堆栈,修改后的命令如下:
dotnet watch --project ./test-project test --logger "console;verbosity=normal;stacktrace=Filtered"
- 方案3:xUnit配置文件过滤
在测试项目根目录新增xunit.runner.json文件,添加如下配置:
{ "stackTraceFilter": "default", "copyToOutputDirectory": "PreserveNewest" }
以上三种方案可以组合使用,过滤效果叠加。
VSCode可视化测试错误的方案
你已经安装的dotnet-test-explorer扩展本身就支持完全脱离控制台的可视化测试管理,按以下步骤配置即可:
- 打开VSCode设置,搜索
dotnet-test-explorer.testProjectPath,配置为你的测试项目路径./test-project - 开启
dotnet-test-explorer.autoWatch配置项,扩展会自动监听代码变更执行测试,无需手动执行dotnet watch命令 - 测试运行后,侧边栏测试资源管理器会展示所有用例的运行状态,点击失败用例即可直接查看精简后的错误信息、堆栈,且堆栈会直接关联到本地代码行,不会展示FluentAssertions的冗余内容
如果你的项目运行在Docker容器中,安装Dev Containers扩展并配置好容器内路径和本地路径的映射规则,即可正常识别容器内的测试运行结果,实现跳转功能。
内容的提问来源于stack exchange,提问作者THBBFT
相关产品推荐
相关产品推荐

