课程进度 85% · 第9/10章第9/10章 · 标签 1/2
— 1 —
xUnit单元测试
xUnit是.NET生态中最流行的单元测试框架,与 MSTest 和 NUnit 相比更加轻量和现代化。
csharp
1
public class Calculator {
2
public int Add(int a, int b) => a + b;
3
public int Divide(int a, int b) {
4
if (b == 0) throw new DivideByZeroException();
5
return a / b;
6
}
7
}
8
9
// xUnit 测试
10
public class CalculatorTests {
11
[]
12
public void Add_ReturnsSum() {
13
var calc = new Calculator();
14
var result = calc.Add(2, 3);
15
Assert.Equal(5, result);
16
}
17
18
[]
19
[]
20
[]
21
public void Divide_ReturnsQuotient(int a, int b, int expected) {
22
var calc = new Calculator();
23
var result = calc.Divide(a, b);
24
Assert.Equal(expected, result);
25
}
26
}
📖[Fact] 表示一个测试方法,[Theory] 结合 [InlineData] 实现参数化测试
— 2 —
集成测试
集成测试验证多个组件协同工作,WebApplicationFactory 可以模拟完整的HTTP请求。
csharp
1
public class ApiTests
2
: IClassFixture<WebApplicationFactory<Program>> {
3
4
private readonly WebApplicationFactory<Program> _factory;
5
6
public ApiTests(WebApplicationFactory<Program> factory) {
7
_factory = factory;
8
}
9
10
[]
11
public async Task GetUsers_ReturnsSuccess() {
12
var client = _factory.CreateClient();
13
var response = await client.GetAsync("/api/users");
14
response.EnsureSuccessStatusCode();
15
16
var json = await response.Content
17
.ReadAsStringAsync();
18
Assert.Contains("Tom", json);
19
}
20
}
xUnitNUnit集成测试MockTDD覆盖率