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

最新文章

  1. python模块之configparser
  2. plain framework 1 参考手册 入门指引之 代码风格
  3. madown标签说明
  4. 单元测试_JUnit4的应用与实践
  5. 在C#中子线程如何操作主线程中窗体上控件
  6. MFC 构建、消亡 顺序 (一)--单文档 (SDI)
  7. CSS文件和Javascript文件的压缩
  8. Android 自定义View修炼-Android开发之自定义View开发及实例详解
  9. MsSqlServer 语句
  10. Redis 使用 Eval 多个键值自增操作示例
  11. 笨方法学python--简介
  12. ArrayList和LinkedList源码
  13. Microsoft Visual Studio 2017 编译最新版 libuv 1.x 并且生成 LIB 和 DLL 两种模式
  14. 一、学习起步vue——安装
  15. 将已经存在的异步请求callback转换为同步promise
  16. 前端面试(二):N轮面试
  17. 第一章:python基础语法| 字符编码| 条件语句...
  18. Centos6.5搭建vsftpd,并配置用户和密码登录
  19. 利用shell显示wordcount功能
  20. 使用djiango 创建网站

热门文章

  1. linux服务器挂掉自动重启脚本(转)
  2. Java编译过程(传送门)
  3. numpy中的方差、协方差、相关系数
  4. 先从一个 libev 的 demo 入手
  5. simHash 简介以及 java 实现
  6. BizTalk日志自动发送邮件通知
  7. ffmpeg中AVOption的实现分析
  8. Python实现正则表达式匹配任意的邮箱
  9. Android Studio报错Error:Failed to open zip file. Gradle&#39;s dependency cache may be corrupt
  10. js date 前一天