.NET 中的测试

本文介绍了测试的概念,并说明了如何使用不同类型的测试来验证代码。 各种工具可用于测试 .NET 应用程序,例如 .NET CLI集成开发环境(IDE)

测试类型

自动测试是确保应用程序代码执行其作者意图的好方法。 本文介绍单元测试、集成测试和负载测试。

单元测试

单元测试 是一种测试,用于练习各个软件组件或方法,也称为“工作单元”。单元测试应仅测试开发人员控件中的代码。 它们不测试基础结构问题。 基础结构问题包括与数据库、文件系统和网络资源交互。

有关创建单元测试的详细信息,请参阅 测试工具

集成测试

集成测试 不同于单元测试,因为它练习了两个或多个软件组件协同工作的能力,也称为“集成”。这些测试在测试中的系统范围更广,而单元测试侧重于各个组件。 通常,集成测试确实包括基础结构问题。

负载测试

负载测试 旨在确定系统是否可以处理指定的负载。 例如,同时使用应用程序的用户数量以及应用程序以响应方式处理交互的能力。 有关 Web 应用程序的负载测试的详细信息,请参阅 ASP.NET 核心负载/压力测试

测试注意事项

请记住,可以使用编写测试的最佳做法。 例如,测试驱动开发(TDD) 是指在编写要测试的代码之前,先编写单元测试。 TDD 就像是在写书之前先创建一本书的大纲。 单元测试可帮助开发人员编写更简单、可读且高效的代码。

测试工具

在 .NET 中运行测试时,涉及两个组件:测试平台和测试框架。

测试平台

测试平台是运行测试的引擎,并作为与 IDE 通信的渠道。 例如,Visual Studio 可以将发现请求发送到测试平台,以便它可以在测试资源管理器中显示可用测试。 测试平台将找到的测试结果反馈给 IDE。 执行测试时也会发生类似的沟通。

VSTest 已在 .NET 中使用多年,是生态系统中唯一的测试平台。 2024 年初,发布了名为 Microsoft.Testing.Platform (MTP)的新测试平台的第一个稳定版本。

测试框架

测试框架基于测试平台构建。 它定义一组可供你使用的属性和 API,作为测试作者。 它通常由测试适配器提供支持,该适配器充当测试框架和测试平台之间的通信层。 常用的测试框架是 MSTest、NUnit、TUnit 和 xUnit.net。

MSTest

MSTest 是所有 .NET 语言的Microsoft测试框架。 它可扩展,适用于 .NET CLI、Visual Studio、Visual Studio Code 和 Rider。 它支持 VSTest 和 Microsoft.Testing.Platform。

有关详细信息,请参阅以下资源:

NUnit

NUnit 是适用于所有 .NET 语言的单元测试框架。 最初,NUnit 已从 JUnit 移植,并且当前生产版本已重写,其中包含许多新功能,并支持各种 .NET 平台。 这是 .NET Foundation的项目。 它支持 VSTest 和 Microsoft.Testing.Platform。

有关详细信息,请参阅以下资源:

TUnit

TUnit 完全基于 Microsoft.Testing.Platform 构建,不支持 VSTest。 有关详细信息,请参阅 TUnit 文档。

xUnit.net

xUnit.net 是适用于 .NET 的免费开源社区单元测试工具。 NUnit v2 的最初发明者编写了 xUnit.net。 xUnit.net 是用于单元测试 .NET 应用的最新技术。 它还适用于 ReSharper、CodeRush 和 TestDriven.NET。 xUnit.net 是 .NET Foundation 的一个项目,根据其行为准则进行作。 它支持 VSTest 和 Microsoft.Testing.Platform

有关详细信息,请参阅以下资源:

运行测试

.NET CLI

可以使用 .NET CLIdotnet 测试 命令从解决方案中的所有测试项目运行单元测试。 .NET CLI 公开了 集成开发环境(IDE) 通过用户界面提供的大部分功能。 .NET CLI 是跨平台的,可用作持续集成和交付管道的一部分。 .NET CLI 与脚本化进程一起使用,以自动执行常见任务。

IDE

无论是使用 Visual Studio、Visual Studio Code 还是 Rider,都有用于测试功能的图形用户界面。 IDE 提供的功能比 CLI 更多,例如,Live Unit Testing。 有关详细信息,请参阅 Visual Studio 中的包含与排除测试

另请参阅

有关详细信息,请参阅以下文章: