本文介绍了测试的概念,并说明了如何使用不同类型的测试来验证代码。 各种工具可用于测试.NET应用程序,例如 .NET CLI 或 Integrated 开发环境(IDE)。
测试类型
自动测试是确保应用程序代码执行其作者意图的好方法。 本文介绍单元测试、集成测试和负载测试。
单元测试
单元测试 是一种测试,用于练习各个软件组件或方法,也称为“工作单元”。单元测试应仅测试开发人员控件中的代码。 它们不测试基础结构问题。 基础结构问题包括与数据库、文件系统和网络资源交互。
有关创建单元测试的详细信息,请参阅 测试工具。
集成测试
集成测试 不同于单元测试,因为它练习了两个或多个软件组件协同工作的能力,也称为“集成”。这些测试在测试中的系统范围更广,而单元测试侧重于各个组件。 通常,集成测试确实包括基础结构问题。
负载测试
负载测试 旨在确定系统是否可以处理指定的负载。 例如,同时使用应用程序的用户数量以及应用程序以响应方式处理交互的能力。 有关 Web 应用程序的负载测试的详细信息,请参阅 ASP.NET Core 负载/压力测试。
测试注意事项
请记住,可以使用编写测试的最佳做法。 例如,测试驱动开发(TDD) 是指在编写要测试的代码之前,先编写单元测试。 TDD 就像是在写书之前先创建一本书的大纲。 单元测试可帮助开发人员编写更简单、可读且高效的代码。
测试工具
在.NET中运行测试时,涉及两个组件:测试平台和测试框架。
测试平台
测试平台是运行测试和与 IDE 和 CLI 等工具通信的引擎。
使用 Test 平台概述来了解 VSTest 和 Microsoft.Testing.Platform 之间的差异,并为您的方案选择最佳平台。
迁移指南请参阅 Migrate from VSTest to Microsoft.Testing.Platform。
测试框架
测试框架基于测试平台构建。 它定义一组可供你使用的属性和 API,作为测试作者。 它通常由测试适配器提供支持,该适配器充当测试框架和测试平台之间的通信层。 常用的测试框架是 MSTest、NUnit、TUnit 和 xUnit.net。
MSTest
MSTest是所有.NET语言的Microsoft测试框架。 它可扩展,适用于 .NET CLI、Visual Studio、Visual Studio Code 和 Rider。 它支持 VSTest 和 Microsoft。Testing.Platform。
有关详细信息,请参阅以下资源:
- 使用 MSTest 运行测试
- 开始使用 C#
- 开始使用 F#
- 从 Visual Basic 开始
NUnit
NUnit是适用于所有.NET语言的单元测试框架。 最初,NUnit 已从 JUnit 移植,并且当前生产版本已重写,其中包含许多新功能,并支持各种.NET平台。 这是.NET基金会的项目。 它支持 VSTest 和 Microsoft。Testing.Platform。
有关详细信息,请参阅以下资源:
- 在 NUnit (NUnit runner) 中对 Microsoft.Testing.Platform 的支持
- 使用 C# 进行单元测试
- 使用 F# 进行 单元测试
- 使用 Visual Basic 进行单元测试
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
有关详细信息,请参阅以下资源:
- Microsoft.Testing.Platform 在 xUnit.net v3 中的支持
- 使用 C# 进行单元测试
- 使用 F# 进行 单元测试
- 在 Visual Basic 中进行单元测试
运行测试
.NET CLI
可以使用 .NET CLI 和 dotnet test 命令从解决方案中的所有测试项目运行单元测试。 .NET CLI 公开了Integrated 开发环境(IDE)通过用户界面提供的大部分功能。 .NET CLI 是跨平台的,可用作持续集成和交付管道的一部分。 .NET CLI 与脚本化过程一起使用,以自动执行常见任务。
IDE
无论是使用 Visual Studio、Visual Studio Code 还是 Rider,都有用于测试功能的图形用户界面。 IDE 提供的功能比 CLI 更多,例如,Live Unit Testing。 有关详细信息,请参阅 在 Visual Studio 中包括和排除测试。
另请参阅
有关详细信息,请参阅以下文章:
- 使用 .NET 进行单元测试的最佳实践
- 在 ASP.NET Core 中的 集成测试
- 运行选择性单元测试
- 将代码覆盖率用于单元测试