使用 Visual Studio 定义和运行单元测试来维护代码运行状况,确保代码覆盖率,并在客户之前查找错误和故障。 频繁运行单元测试,确保代码正常工作。
在本文中,代码使用 C# 和C++,插图位于 C# 中,但概念和功能适用于 .NET 语言、C++、Python、JavaScript 和 TypeScript。
创建单元测试
本部分介绍如何创建单元测试项目。
打开要在 Visual Studio 中测试的项目。
为了演示示例单元测试,本文测试名为 HelloWorld 的简单“Hello World”C# 或C++控制台项目。 此类项目的示例代码如下所示:
在 解决方案资源管理器中,选择解决方案节点。 然后,从顶部菜单栏中,选择“ 文件>添加新>项目”。
在新项目对话框中,找到要使用的单元测试项目。
在搜索框中键入 测试 ,找到要使用的测试框架的单元测试项目模板,例如 MSTest (C#)或 本机单元测试 项目(C++),然后选择它。
从 Visual Studio 2017 版本 14.8 开始,.NET 语言包括 NUnit 和 xUnit 的内置模板。 对于 C++,在本示例中,选择 本机单元测试 项目,该项目使用 Microsoft 本机单元测试框架。 (若要使用不同的C++测试框架,请参阅 编写适用于 C/C++ 的单元测试)。 有关 Python,请参阅 在 Python 代码中设置单元测试 以设置测试项目。
小窍门
仅对于 C#,可以使用更快的方法从代码创建单元测试项目。 有关详细信息,请参阅 创建单元测试项目和测试方法。 若要将此方法用于 .NET Core 或 .NET Standard,需要 Visual Studio 2019 或更高版本。
下图显示了 .NET 中支持的 MSTest 单元测试。
单击“ 下一步”,选择测试项目的名称,然后单击“ 创建”。
项目已添加到解决方案中。
在单元测试项目中,通过右键单击 “引用 ”或“ 依赖项 ”并选择“ 添加引用 ”或 “添加项目引用”来添加对要测试的项目的引用。
选择包含要测试的代码的项目,然后单击“ 确定”。
将代码添加到单元测试方法。
例如,可以通过选择与测试框架匹配的正确文档选项卡来使用以下代码:MSTest、NUnit 或 xUnit(仅在 .NET 上受支持),或C++Microsoft本机单元测试框架。
using Microsoft.VisualStudio.TestTools.UnitTesting; using System.IO; using System; namespace HelloWorldTests { [TestClass] public class UnitTest1 { private const string Expected = "Hello World!"; [TestMethod] public void TestMethod1() { using (var sw = new StringWriter()) { Console.SetOut(sw); HelloWorld.Program.Main(); var result = sw.ToString().Trim(); Assert.AreEqual(Expected, result); } } } }
运行单元测试
打开 测试资源管理器。
若要打开测试资源管理器,请从顶部菜单栏中选择 “测试>测试资源管理器 ”(或按 Ctrl + E、 T)。
单击“ 全部运行 ”(或按 Ctrl + R、 V)运行单元测试。
测试完成后,绿色复选标记指示测试已通过。 红色的“x”图标指示测试失败。
小窍门
可以使用 测试资源管理器 从内置测试框架(MSTest)或第三方测试框架运行单元测试。 可以将测试分组为类别、筛选测试列表,以及创建、保存和运行测试播放列表。 还可以调试测试,并分析测试性能和代码覆盖率。
查看实时单元测试结果(Visual Studio Enterprise)
如果在 Visual Studio 2017 或更高版本中使用 MSTest、xUnit 或 NUnit 测试框架,可以查看单元测试的实时结果。
注释
若要执行这些步骤,需要 Visual Studio Enterprise 以及 .NET 代码和以下测试框架之一:MSTest、xUnit 或 NUnit。
从“测试”菜单选择“实时单元测试”,然后选择>,启动实时单元测试。
编写和编辑代码时,在代码编辑器窗口中查看测试的结果。
单击测试结果指示器可查看详细信息,例如涵盖该方法的测试的名称。
有关实时单元测试的详细信息,请参阅 Live 单元测试。
使用第三方测试框架
可以使用 NUnit、Boost 或 Google C++ Testing Framework 等第三方测试框架在 Visual Studio 中运行单元测试,具体取决于编程语言。 使用第三方框架:
使用 NuGet 包管理器 为所选框架安装 NuGet 包。
(.NET)从 Visual Studio 2017 版本 14.6 开始,Visual Studio 包括 NUnit 和 xUnit 测试框架的预配置测试项目模板。 这些模板还包括启用支持所需的 NuGet 包。
(C++)在 Visual Studio 2017 及更高版本中,已包含 Google C++ Testing Framework 等一些框架。 有关详细信息,请参阅 在 Visual Studio 中为 C/C++ 编写单元测试。
如何添加单元测试项目:
打开包含要测试的代码的解决方案。
右键单击 解决方案资源管理器 中的解决方案,然后选择“ 添加新>项目”。
选择单元测试项目模板。
在此示例中,选择“NUnit”
项目模板包括对 NUnit 和 NUnit3TestAdapter 的 NuGet 引用。
将测试项目中的引用添加到包含要测试的代码的项目。
右键单击 解决方案资源管理器中的项目,然后选择“ 添加>引用”。 (还可以从 “引用 ”或 “依赖项 ”节点的右键单击菜单中添加引用。
将代码添加到测试方法。
从 测试资源管理器 运行测试,或者右键单击测试代码并选择 “运行测试”( 或 Ctrl + R、 T)。