Kiểm tra đơn vị (unit testing) là một kỹ thuật quan trọng để đảm bảo rằng các phần riêng lẻ của mã nguồn hoạt động như mong đợi. Trong C#, việc kiểm tra đơn vị thường được thực hiện bằng cách sử dụng các framework như MSTest, NUnit, hoặc xUnit. Dưới đây là hướng dẫn chi tiết về cách kiểm tra đơn vị trong C# sử dụng xUnit, một trong những framework phổ biến nhất.
1. Tạo Dự Án C# và Thư Viện Lớp Học
Đầu tiên, tạo một dự án C# và một thư viện lớp học mà bạn muốn kiểm tra. Ví dụ, chúng ta sẽ tạo một dự án đơn giản với một lớp Calculator
có phương thức Add
.
dotnet new classlib -n MyLibrary
cd MyLibrary
Tạo lớp Calculator
trong thư viện:
// Calculator.cs
namespace MyLibrary
{
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
}
2. Tạo Dự Án Kiểm Tra Đơn Vị
Tiếp theo, tạo một dự án kiểm tra đơn vị:
cd ..
dotnet new xunit -n MyLibrary.Tests
cd MyLibrary.Tests
dotnet add reference ../MyLibrary/MyLibrary.csproj
3. Viết Kiểm Tra Đơn Vị
Tạo một lớp kiểm tra đơn vị cho Calculator
:
// CalculatorTests.cs
using Xunit;
using MyLibrary;
namespace MyLibrary.Tests
{
public class CalculatorTests
{
[Fact]
public void Add_ShouldReturnSumOfTwoNumbers()
{
// Arrange
var calculator = new Calculator();
int a = 5;
int b = 10;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(15, result);
}
}
}
Trong đoạn mã trên:
[Fact]
: Xác định một phương thức kiểm tra đơn vị.Assert.Equal
: Kiểm tra xem kết quả của phương thứcAdd
có bằng 15 hay không.
4. Chạy Kiểm Tra Đơn Vị
Chạy các kiểm tra đơn vị bằng cách sử dụng lệnh sau trong thư mục dự án kiểm tra:
dotnet test
Bạn sẽ thấy kết quả đầu ra tương tự như sau:
Test run for ...\MyLibrary.Tests.dll (.NETCoreApp,Version=v5.0)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
...
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 1.2345 Seconds
5. Thêm Các Kiểm Tra Đơn Vị Khác
Bạn có thể thêm nhiều phương thức kiểm tra đơn vị khác để kiểm tra các tình huống khác nhau:
[Fact]
public void Add_ShouldReturnNegativeForNegativeInputs()
{
// Arrange
var calculator = new Calculator();
int a = -5;
int b = -10;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(-15, result);
}
[Fact]
public void Add_ShouldReturnZeroWhenBothInputsAreZero()
{
// Arrange
var calculator = new Calculator();
int a = 0;
int b = 0;
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(0, result);
}
6. Sử Dụng Các Thuộc Tính Khác Như Theory
Ngoài [Fact]
, bạn có thể sử dụng [Theory]
để kiểm tra các giá trị đầu vào khác nhau bằng cách sử dụng các thuộc tính InlineData
.
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, -2, -3)]
[InlineData(0, 0, 0)]
public void Add_ShouldReturnExpectedResult(int a, int b, int expected)
{
// Arrange
var calculator = new Calculator();
// Act
int result = calculator.Add(a, b);
// Assert
Assert.Equal(expected, result);
}
Tổng Kết
Kiểm tra đơn vị là một phần quan trọng của phát triển phần mềm, giúp đảm bảo rằng mã nguồn của bạn hoạt động như mong đợi. Sử dụng framework xUnit trong C# giúp bạn dễ dàng viết và chạy các kiểm tra đơn vị. Bằng cách tạo các bài kiểm tra cho các phương thức trong ứng dụng của bạn, bạn có thể xác minh rằng chúng hoạt động chính xác và giảm thiểu lỗi trong quá trình phát triển.
Comments