终于解决 xUnit.net 测试中无法输出到控制台的问题
2024-10-14 08:10:28
2018-8-2 更新:今天发现在 git bash 中用 dotnet test 运行 xunit 测试可以正常输出到控制台,只是在 PowerShell 与 Windows 命令行中有这个问题。
被这个问题困扰很久了,用 dotnet test 命令运行 xUnit.net 测试项目时,测试代码中的 Console.WriteLine() 输出的内容在控制台总是不显示。
之前一直以为是 xunit runner 屏蔽了控制台的输出,昨天在博问进行了提问 —— 请问 xUnit 在 .NET Core 中是如何屏蔽控制台输出的,今天在 xUnit 的源代码中苦苦搜寻, 心想只要知道是怎么屏蔽的,就有办法解除。但是,翻遍 xUnit 源代码也没找到对 Console.Out 动手脚的地方。
后来,czd890 在博问中的回复 “启动单独的一个进程进行测试,所有输出内容都在他的进程内” 让我恍然大悟 —— xUnit 根本没有屏蔽控制台输出,只是因为 dotnet test 与 xunit runner 不在同一个进程,Console.WriteLine 在 xunit runner 进程中输出的内容,在另外一个进程中当然看不到。
罪魁祸首就是 dotnet test 所使用的 xunit runner —— xunit.runner.visualstudio ,它会在另外一个进程中运行测试,而改用 dotnet xunit 命令就可以轻松解决这个问题。
在测试项目的 .csproj 文件中添加如下的配置
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
dotnet xunit 运行测试成功输出"Hello World!"
PS > dotnet xunit
Running .NET Core 2.1.0 tests for framework netcoreapp2.1...
xUnit.net Console Runner (64-bit .NET Core 4.6.26515.07)
Discovering: XUnitConsoleOutput
Discovered: XUnitConsoleOutput
Starting: XUnitConsoleOutput
Hello World!
Finished: XUnitConsoleOutput
=== TEST EXECUTION SUMMARY ===
XUnitConsoleOutput Total: 1, Errors: 0, Failed: 0, Skipped: 0, Time: 0.194s
最新文章
- python模块之configparser
- plain framework 1 参考手册 入门指引之 代码风格
- madown标签说明
- 单元测试_JUnit4的应用与实践
- 在C#中子线程如何操作主线程中窗体上控件
- MFC 构建、消亡 顺序 (一)--单文档 (SDI)
- CSS文件和Javascript文件的压缩
- Android 自定义View修炼-Android开发之自定义View开发及实例详解
- MsSqlServer 语句
- Redis 使用 Eval 多个键值自增操作示例
- 笨方法学python--简介
- ArrayList和LinkedList源码
- Microsoft Visual Studio 2017 编译最新版 libuv 1.x 并且生成 LIB 和 DLL 两种模式
- 一、学习起步vue——安装
- 将已经存在的异步请求callback转换为同步promise
- 前端面试(二):N轮面试
- 第一章:python基础语法| 字符编码| 条件语句...
- Centos6.5搭建vsftpd,并配置用户和密码登录
- 利用shell显示wordcount功能
- 使用djiango 创建网站