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

终于解决 xUnit.net 测试中无法输出到控制台的问题的更多相关文章

  1. 终于解决 k8s 集群中部署 nodelocaldns 的问题

    自从开始在 kubernetes 集群中部署 nodelocaldns 以提高 dns 解析性能以来,一直被一个问题困扰,只要一部署 nodelocaldns ,在 coredns 中添加的 rewr ...

  2. 关于discuz“终于解决“头像保存过程中发生网络错误,请重试"”的解决方法

    1 php.ini里面allow_url_fopen = On2 将php.ini中的;upload_tmp_dir = 该行的注释符,即前面的分号“:”去掉,使该行在php.ini文档中起作用.up ...

  3. Python3 tkinter基础 Entry get 点击按钮 将输入框中文字输出到控制台

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. PCB 电测试--测试点数自动输出到流程指示中(读取TGZ Stephdr文件)

    好不容易实现了 <PCB 无需解压,直接读取Genesis TGZ指定文件 > 正好这里有一项需求:PCB电测试--测试点数自动输出到流程指示中 一.自动输出测试点小结; 1.由于历史原因 ...

  5. 使用 xunit 编写测试代码

    使用 xunit 编写测试代码 Intro xunit 是 .NET 里使用非常广泛的一个测试框架,有很多测试项目都是在使用 xunit 作为测试框架,不仅仅有很多开源项目在使用,很多微软的项目也在使 ...

  6. Windows渗透测试中wmi的利用

    0x01 关于WMI WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是W ...

  7. 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

    一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...

  8. Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑

    脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...

  9. 在Spring Boot中使用Docker在测试中进行高级功能测试

    最近又学到了很多新知识,感谢优锐课老师细致地讲解,这篇博客记录下自己所学所想. 想更多地了解Spring Boot项目中的功能测试吗?这篇文章带你了解有关在测试中使用Docker容器的更多信息. 本文 ...

随机推荐

  1. PHPStrom激活方法

    直接用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码”, 然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串 如果提示红字体信息, ...

  2. 爬取 Caused by SSLError(SSLError("bad handshake: Error

    在爬虫中遇到如下报错: Traceback (most recent call last): File "C:/Users/xuchunlin/PycharmProjects/A9_25/h ...

  3. Java JDK下载、安装与环境变量配置

    https://blog.csdn.net/siwuxie095/article/details/53386227 https://blog.csdn.net/liudongdong19/articl ...

  4. 9-11-Trie树/字典树/前缀树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第9章  查找 - Trie树/字典树/前缀树(键树) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚 ...

  5. mac关闭占用某个端口的进程

    在启动项目的时候有时候会提示端口被占用,但是怎么都找不到那个关闭进程的地方,可以直接通过命令行关闭这个进程: 比如要关闭:8000端口的进程: 1. 查找端口进程: lsof -i: 会把所有的占用8 ...

  6. ph 提交代码的步骤;

    ph 提交代码的步骤: git status 查看状态: ls -ah 查看文件: git stash list 查看本地缓存的文件: git branch 查看本地的分支: git checkout ...

  7. MySQL数据库的安装教程及相关问题

    MySQL数据库的安装教程及相关问题 2018-07-13 MySQL数据库的下载及安装教程 问题1:Authentication plugin 'caching_sha2_password' can ...

  8. python按行遍历一个大文件,最优的语法应该是什么?

    理论上来说,总体上file.readlines()可以(取决于实现)不慢于你自己手动的一次次调用file.readline(),因为前者的循环在C语言层面,而你的循环是在Python语言层面. 但是在 ...

  9. Centos7 Mysql5.7主从服务器配置

    在两台Linux机器上安装MySQL 一.Master主服务器配置1.编辑my.cnf(命令查找文件位置:find / -name my.cnf)vi /etc/mysql/my.cnf 在[mysq ...

  10. 博客搬家了,新域名dinphy.wang

    博客搬家了,新域名      dinphy.wang 博客搬家了,新域名      www.dinphy.wang 博客搬家了,新域名      dinphy.wang 博客搬家了,新域名     w ...