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

在 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(){// Arrangevar calculator = new Calculator();int a = 5;int b = 3;
// Act int result = calculator.Add(a, b); // Assert Assert.AreEqual(8, result);}
}
[TestClass] 标记测试类,[TestMethod] 标记具体测试方法。每个测试通常分为三部分:
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.ThrowsException(() => 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# 单元测试编写与执行指南的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441807.html
微信扫一扫
支付宝扫一扫