技术归档文章随笔一句话导航搜索关于

.NET 单元测试

日期: 2023-07-13 分组: .NET 标签: .NET 4分钟 683字

单元测试

.NET 单元测试是一种软件开发技术,用于验证代码是否按照预期工作。每个单元通常是一个独立的代码模块,例如一个方法或函数。单元测试的目标是确保每个单元都能正确执行其功能,从而提高代码的质量和可靠性。

单元测试的关键点:

  • 自动化:单元测试通常是自动化的,这意味着可以通过运行测试脚本来自动验证代码的功能。

  • 独立性:每个单元测试应独立于其他测试,确保测试结果不受其他代码部分的影响。

  • 可重复性:单元测试应能在不同时间和不同环境中重复运行并得到相同的结果。

断言(MSTest)

常用断言方法:

1
Assert.AreEqual() //验证两个值是否相等。
2
Assert.AreNotEqual() // 验证两个值是否不相等。
3
Assert.IsTrue() // 验证条件是否为 true。
4
Assert.IsFalse() // 验证条件是否为 false。
5
Assert.IsNull() // 验证对象是否为 null。
6
Assert.IsNotNull() // 验证对象是否不为 null。
7
Assert.AreSame() // 验证两个对象是否引用同一个对象。
8
Assert.AreNotSame() // 验证两个对象是否引用不同的对象。
9
Assert.Fail() // 使测试失败,并指定失败消息。
10
Assert.ThrowsException() // 验证是否抛出指定类型的异常。

Mocking

Mocking 指创建一个对象来模拟真实对象。为什么不用真实对象,需要模拟呢?因为有些真实对象是不容易构造或获取的。并且 Mocking 可以隔离测试中的依赖项,确保测试的独立性和稳定性。

使用 Moq

Moq 是一个流行的 .NET Mocking 框架,用于创建和管理模拟对象,验证方法调用、设置返回值等。

使用 Moq 的基本步骤:

  • 安装 Moq:在你的项目中安装 Moq 包(例如通过 NuGet)。
  • 创建 Mock 对象:使用 Moq 创建模拟对象。
  • 设置行为和返回值:配置模拟对象的行为和返回值。
  • 验证调用:在测试中验证模拟对象的方法是否被调用。

示例代码:

1
using Moq;
2
using Xunit;
3
4
// 依赖项接口
5
public interface IService
6
{
7
int GetValue();
8
}
9
10
// 被测试的类
11
public class Consumer
12
{
13
private readonly IService _service;
14
15
public Consumer(IService service)
35 collapsed lines
16
{
17
_service = service;
18
}
19
20
public int GetProcessedValue()
21
{
22
var value = _service.GetValue();
23
return value * 2;
24
}
25
}
26
27
public class ConsumerTests
28
{
29
[Fact]
30
public void GetProcessedValue_ReturnsCorrectValue()
31
{
32
// 创建 Mock 对象
33
var mockService = new Mock<IService>();
34
35
// 设置 Mock 行为和返回值
36
mockService.Setup(s => s.GetValue()).Returns(10);
37
38
// 使用 Mock 对象创建 Consumer 实例
39
var consumer = new Consumer(mockService.Object);
40
41
// 调用被测试的方法
42
var result = consumer.GetProcessedValue();
43
44
// 验证结果
45
Assert.Equal(20, result);
46
47
// 验证 Mock 方法调用
48
mockService.Verify(s => s.GetValue(), Times.Once);
49
}
50
}

假数据生成器

  • AutoFixture
  • Bogus
上一篇: 前置机
下一篇: 表达式树
人应当是有理想的.
文章目录