0

0

C# 如何进行单元测试_C# 单元测试编写与执行指南

星降

星降

发布时间:2025-11-18 15:47:02

|

801人浏览过

|

来源于php中文网

原创

使用MSTest框架在Visual Studio中创建单元测试项目并编写测试类,通过[TestMethod]和[DataRow]等特性实现方法验证与参数化测试,利用Assert类进行结果断言,确保代码正确性。

c# 如何进行单元测试_c# 单元测试编写与执行指南

在 C# 开发中,单元测试是保障代码质量的关键环节。通过编写可重复执行的测试用例,开发者可以验证方法逻辑是否正确,降低引入 bug 的风险。本文将介绍如何使用 Visual Studio 内置的单元测试框架(MSTest)进行 C# 单元测试的编写与执行。

创建单元测试项目

在解决方案中添加一个专门用于测试的项目,便于组织和管理测试代码。

  • 右键点击解决方案 → 选择“添加” → “新建项目”
  • 搜索并选择“单元测试项目 (.NET Core)”或“MSTest 测试项目”
  • 命名测试项目,例如:MyApp.Tests
  • 创建后,该项目会自动引用 MSTest 框架

接着,在测试项目中添加对目标项目的引用:

  • 右键点击“引用” → “添加项目引用”
  • 勾选你要测试的主项目(如 MyApp)

编写第一个单元测试

假设你有一个简单的计算器类:

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

在测试项目中创建对应的测试类:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass] public class CalculatorTests { [TestMethod] public void Add_WhenGivenTwoNumbers_ShouldReturnCorrectSum() { // Arrange var calculator = new Calculator(); int a = 5; int b = 3;

    // Act
    int result = calculator.Add(a, b);

    // Assert
    Assert.AreEqual(8, result);
}

}

[TestClass] 标记测试类,[TestMethod] 标记具体测试方法。每个测试通常分为三部分:

Ideogram
Ideogram

Ideogram是一个全新的文本转图像AI绘画生成平台,擅长于生成带有文本的图像,如LOGO上的字母、数字等。

下载
  • Arrange:准备输入数据和对象实例
  • Act:调用被测方法
  • Assert:验证结果是否符合预期

运行单元测试

Visual Studio 提供了多种方式运行测试:

  • 打开“测试资源管理器”(Test Explorer)窗口(菜单:测试 → 运行 → 所有测试)
  • 点击“全部运行”按钮,系统会编译并执行所有测试用例
  • 测试通过显示绿色对勾,失败则为红色叉号
  • 双击失败的测试可查看详细错误信息,比如期望值与实际值的差异

也可以右键某个测试方法,选择“运行选定测试”进行快速调试。

使用其他断言和测试特性

MSTest 提供丰富的断言方法来满足不同场景:

  • Assert.IsTrue(condition):判断条件是否为真
  • Assert.IsNull(object):验证对象为空
  • Assert.ThrowsException():验证方法是否抛出指定异常

示例:测试除零异常

[TestMethod]
public void Divide_ByZero_ShouldThrowDivideByZeroException()
{
    var calc = new Calculator();
Assert.ThrowsExceptionzuojiankuohaophpcnDivideByZeroExceptionyoujiankuohaophpcn(() => calc.Divide(10, 0));

}

还可以使用 [DataRow] 实现参数化测试:

[DataTestMethod]
[DataRow(2, 3, 5)]
[DataRow(-1, 1, 0)]
[DataRow(0, 0, 0)]
public void Add_MultipleCases_ShouldReturnCorrectResult(int a, int b, int expected)
{
    var calc = new Calculator();
    int result = calc.Add(a, b);
    Assert.AreEqual(expected, result);
}

基本上就这些。掌握这些基础操作后,你可以逐步引入更复杂的测试场景,比如 Mock 对象(配合 Moq 框架)、异步测试等。C# 单元测试并不复杂,但坚持写测试会让代码更健壮、重构更有信心。

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

79

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

46

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

71

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

370

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

45

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

12

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 45万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号