Unit Testing là yếu tố then chốt đảm bảo chất lượng mã C#. Nó giúp phát hiện lỗi sớm, hỗ trợ tái cấu trúc (refactor) an toàn và thúc đẩy thiết kế mã tốt (đặc biệt khi kết hợp TDD - Test Driven Development).
Công cụ phổ biến
- MSTest - Framework tích hợp sẵn trong Visual Studio (Microsoft.VisualStudio.TestTools.UnitTesting)
- xUnit - Framework hiện đại, phổ biến nhất hiện nay (.NET Core/.NET 5+)
- NUnit - Framework thành thạo, nhiều tính năng nâng cao
Tạo dự án Unit Test (Visual Studio)
- Solution Explorer → Right-click Solution → Add → New Project
- Tìm "Unit Test Project" (MSTest) hoặc "xUnit Test Project"
- Đặt tên (ví dụ:
MyProject.Tests) → Create - Add reference đến project cần test
Ví dụ test cơ bản (xUnit)
using Xunit;
public class CalculatorTests
{
[Fact]
public void Add_TwoPositiveNumbers_ReturnsSum()
{
// Arrange
var calc = new Calculator();
// Act
int result = calc.Add(2, 3);
// Assert
Assert.Equal(5, result);
}
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, 1, 0)]
[InlineData(0, 0, 0)]
public void Add_MultipleCases_ReturnsExpected(int a, int b, int expected)
{
var calc = new Calculator();
Assert.Equal(expected, calc.Add(a, b));
}
}
Nguyên tắc TDD (Red-Green-Refactor)
- Red: Viết test thất bại trước
- Green: Viết code tối thiểu để test pass
- Refactor: Cải thiện code mà không thay đổi hành vi
Lợi ích: Code đáng tin cậy, dễ bảo trì, tài liệu sống, tự tin khi deploy.