首页 > 编程语言 >如何在vscode中为c#编写单元测试

如何在vscode中为c#编写单元测试

时间:2024-04-05 16:22:21浏览次数:39  
标签:c# 单元测试 vscode test 测试 xUnit dotnet output

如何在vscode中为c#编写单元测试

从零开始创建一个单元测试工程

  1. 创建测试单元工程

创建测试文件的方法和新建项目类似,都是使用dotnet new命令。

dotnet new xunit
  1. 为测试单元工程添加需要测试的工程的项目引用
dotnet add reference ..\MyMath\MyMath.csproj

文件的目录结构应大致如下树状图所示。

project/
├─program/
│	├─src/
│	└─program.csproj
└─program.test/
	├─src/
	└─program.test.csproj
  1. 运行测试单元
dotnet test

重定向输出

Q:xUnit为什么没有办法直接打印输出?

A:xUnit的测试会新开一个进程进行测试,因此运行dotnet test命令的进程没有办法捕获xUnit进程的输出。

在测试代码中添加ITestOutputHelper接口,并在构造函数中将其初始化,之后使用该接口的WriteLine方法输出文本。

using Xunit;
using Xunit.Abstractions;

public class MyTestClass
{
    // 定义接口
    private readonly ITestOutputHelper output;

    public MyTestClass(ITestOutputHelper output)
    {
        // 初始化接口
        this.output = output;
    }

    [Fact]
    public void MyTest()
    {
        var temp = "my class!";
        output.WriteLine("This is output from {0}", temp);
    }
}

在这里要注意的是,vscode中如果想要看到标准输出,需要在dotnet test命令后添加额外的参数--logger "console;verbosity=detailed",也就是运行以下命令。

dotnet test --logger "console;verbosity=detailed"

参考文章

Microsoft:使用 dotnet test 和 xUnit 在 .NET 中对 C# 进行单元测试

知乎:VSCode + xUnit 编写 C# 单元测试

xUnit:Capturing Output

博客园:终于解决 xUnit.net 测试中无法输出到控制台的问题

标签:c#,单元测试,vscode,test,测试,xUnit,dotnet,output
From: https://www.cnblogs.com/hellofriland/p/18115858

相关文章

  • 基于深度学习的PCB板缺陷检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5的PCB板缺陷检测系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像、视频和实时摄......
  • C# 属性与结构
    C#属性C#属性,属性是一种特殊的类成员。我们使用预定义的set和get方法来访问和修改它们。属性读取和写入会转换为获取和设置方法调用。与使用自定义方法调用(例如object.GetName())相比,使用字段符号(例如object.Name)访问变量更容易。但是,就属性而言,我们仍然具有封装和信息......
  • 学习记录:bazel和cmake运行终端指令
    Bazel和CMake都是用于构建软件项目的工具,但它们之间有一些重要的区别和特点:Bazel:Bazel是由Google开发的构建和测试工具,用于构建大规模的软件项目。它采用一种称为“基于规则”的构建系统,它利用构建规则和依赖关系来自动化构建过程。Bazel支持多种编程语言,包括C++、Java、......
  • Pdf文件格式解析:stream中的变换矩阵指令 1 0 0 -1 0 841.9 cm
    解释100-10841.9cm在PDF文件中的变换矩阵指令100-10841.9cm中,前四个数值100-1组成了一个2x2的线性变换部分,用于描述旋转和缩放操作,而不涉及平移。这里,100-1的每一个数字都有特定的意义:第一个数字1:这是矩阵的第一行第一列的元素。它决定了x坐标在......
  • 突破编程_C++_网络编程(TCPIP 四层模型(传输层))
    1传输层的功能与作用在TCP/IP四层模型中,传输层位于网络层之上和应用层之下,负责在源主机和目标主机之间提供端到端的可靠数据传输服务。传输层的主要功能与作用体现在以下几个方面:分段与重组:由于网络层的数据包大小有限制(如IP数据包的最大长度为65535字节),而应用层......
  • 突破编程_C++_网络编程(Windows 套接字(概述))
    1什么是Window套接字编程1.1基本概念Windows的套接字(Socket)是基于Windows操作系统的网络通信编程接口。它起源于UNIX系统的Berkeley套接字,但经过微软和第三方厂商的共同制定,形成了一套适用于Windows环境的标准,即WindowsSocket规范,简称WinSock。Windows......
  • 多年前的笔记-CenetOS6.7内核优化
    多年前的笔记-CenetOS6.7内核优化文章目录备份优化内核优化文件描述符数量Centos开机启动优化设置显示主机全名内核优化已完成备份[-f/etc/sysctl.conf]&&cp-av/etc/sysctl.conf{,_bak}优化内核cat>/etc/sysctl.conf<<EOFnet.ipv4.tcp_syn_retrie......
  • Nacos注册中心
    一、Nacos的安装1.1、下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/nacos/releases1.2、解压安装包将这个包解压到任意非中文目......
  • 基于深度学习的PCB电子元件识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5的PCB电子元件识别系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像、视频和实时......
  • C#中的方法
    C#方法定义方法是包含一系列语句的代码块。方法必须在类或结构中声明。好的编程习惯是方法仅执行一项特定任务。方法为程序带来了模块化。正确使用方法具有以下优点:减少代码重复将复杂的问题分解成更简单的部分提高代码的清晰度重用代码信息隐藏C#方法特征方法的......