项目

自动化测试

介绍

ABP 在设计时就考虑了可测试性。自动化测试包含几个不同的层次:

  • 单元测试:通常测试单个类(或少数几个类一起)。这类测试速度很快。然而,你通常需要为所测服务的依赖项处理模拟(Mocking)。
  • 集成测试:通常测试一个服务,但这次你不模拟基础基础设施和服务,以观察它们是否能正确地协同工作。
  • UI 测试:测试应用程序的用户界面,就像用户与你的应用程序交互一样。

单元测试与集成测试对比

与单元测试相比,集成测试有一些显著的优势

  • 编写更简单,因为你无需费力建立模拟和处理依赖项。
  • 你的测试代码与所有真实的服务和基础设施(包括数据库映射和查询)一起运行,因此更接近于真实应用程序的测试

但它们也有一些缺点:

  • 由于每个测试用例都需要准备所有基础设施,因此它们比单元测试慢
  • 一个服务中的错误可能会导致多个测试用例失败,因此在某些情况下可能更难找到真正的问题

我们建议混合使用:在必要且你认为编写和维护有效的的地方编写单元测试或集成测试。

应用程序启动模板

应用程序启动模板 已为你正确安装并配置好了测试基础设施。

测试项目

请看 Visual Studio 中的以下解决方案结构:

解决方案-测试项目

有多个测试项目,按层组织:

  • Domain.Tests 用于测试你的领域层对象(如 领域服务实体)。
  • Application.Tests 用于测试你的应用层(如 应用服务)。
  • EntityFrameworkCore.Tests 用于实现抽象测试类,并测试你的自定义仓储实现或 EF Core 映射(如果你使用其他 数据库提供程序,此项目会有所不同)。
  • Web.Tests 用于测试 UI 层(如页面、控制器和视图组件)。此项目仅存在于 MVC / Razor Pages 应用程序中。
  • TestBase 包含一些被其他项目共享/使用的类。

HttpApi.Client.ConsoleTestApp 不是一个自动化测试应用程序。它是一个示例控制台应用程序,展示了如何从 .NET 控制台应用程序消费你的 HTTP API。

接下来的章节将介绍这些项目中包含的基类和其他基础设施。

测试基础设施

启动解决方案已经安装了以下库:

虽然你可以自由地将它们替换为你喜欢的工具,但本文档和示例将基于这些工具。

测试资源管理器

你可以使用测试资源管理器在 Visual Studio 中查看和运行测试。对于其他 IDE,请参阅其各自的文档。

打开测试资源管理器

如果尚未打开,请打开 测试 菜单下的 测试资源管理器

vs-测试资源管理器

运行测试

然后,你可以点击 全部运行运行 按钮来运行测试。初始启动模板为你提供了一些示例测试:

vs-启动模板测试

并行运行测试

测试基础设施兼容并行运行测试。强烈建议并行运行所有测试,这比逐个运行要快得多。

要启用它,请点击设置(齿轮)按钮附近的插入符号图标,然后选择 并行运行测试

vs-并行运行测试

在本文档中