使用MSTest框架在Visual Studio中创建单元测试项目并编写测试类,通过[TestMethod]和[DataRow]等特性实现方法验证与参数化测试,利用Assert类进行结果断言,确保代码正确性。
在 C# 开发中,单元测试是保障代码质量的关键环节。通过编写可重复执行的测试用例,开发者可以验证方法逻辑是否正确,降低引入 bug 的风险。本文将介绍如何使用 Visual Studio 内置的单元测试框架(MSTest)进行
C# 单元测试的编写与执行。
在解决方案中添加一个专门用于测试的项目,便于组织和管理测试代码。
接着,在测试项目中添加对目标项目的引用:
假设你有一个简单的计算器类:
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] 标记具体测试方法。每个测试通常分为三部分:
Visual Studio 提供了多种方式运行测试:
也可以右键某个测试方法,选择“运行选定测试”进行快速调试。
MSTest 提供丰富的断言方法来满足不同场景:
示例:测试除零异常
[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# 单元测试并不复杂,但坚持写测试会让代码更健壮、重构更有信心。