适用范围:
Visual Studio
Visual Studio for Mac
Visual Studio Code
使用 Visual Studio 定义和运行单元测试,使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试,确保代码正常运行。
在本文中,代码使用 C# 和 C++,图例使用 C#,但是概念和特征适用于 .NET 语言、C++、Python、JavaScript 和 TypeScript。
创建单元测试
本节介绍了如何创建单元测试项目。
在 Visual Studio 中,打开要测试的项目。
出于演示示例单元测试的目的,本文测试一个简单的“Hello World”C# 或名为“Hello World”的 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 单元测试。
单击“下一步”,选择测试项目的名称,然后单击“创建”
。
单击“下一步”,选择测试项目的名称,然后单击“创建”
。
项目将添加到解决方案中。
#include "pch.h"
#include "CppUnitTest.h"
#include "../HelloWorldUnitTestCPP/HelloWorldUnitTestCPP.cpp" // Update using your project name
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace HelloWorldTests
TEST_CLASS(HelloWorldTests)
public:
TEST_METHOD(TestMethod)
std::string expected = "Hello World!\n";
std::stringstream buffer;
std::streambuf* sbuf = std::cout.rdbuf(); // Save cout's buffer
std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to the stringstream buffer
// Call main() in your test
int result = main();
// When finished, redirect cout to the original buffer
std::cout.rdbuf(sbuf);
std::cout << "std original buffer: \n";
std::cout << buffer.get();
// Test
Assert::AreEqual(expected, buffer.str());
可以使用测试资源管理器从内置测试框架 (MSTest) 或第三方测试框架运行单元测试。 可以将测试分组为不同类别、筛选测试列表,以及创建、保存和运行测试播放列表。 你还可以调试测试并分析测试性能和代码覆盖率。
查看实时单元测试结果 (Visual Studio Enterprise)
如果在 Visual Studio 2017 或更高版本中使用 MSTest、xUnit 或 NUnit 测试框架,可查看单元测试的实时结果。
要执行这些步骤,需要 Visual Studio Enterprise,以及 .NET 代码和以下测试框架之一:MSTest、xUnit 或 NUnit。
选择“测试”>“Live Unit Testing”>“启动”,从“测试”菜单启用 Live Unit Testing。
有关 Live Unit Testing 的详细信息,请参阅 Live Unit Testing。
使用第三方测试框架
通过使用第三方测试框架(例如 NUnit、Boost 或 Google C++ 测试框架,具体取决于你的编程语言),可以在 Visual Studio 中运行单元测试。 使用第三方框架:
使用 NuGet 包管理器为所选框架安装 NuGet 包 。
(.NET) 从 Visual Studio 2017 14.6 版本开始,Visual Studio 包括适用于 NUnit 和 xUnit 测试框架的预配置测试项目模板。 这些模板还包括必要的 NuGet 包以实现支持。
(C++) 在 Visual Studio 2017 及更高版本中,已经包含了一些框架,如 Google C++ 测试框架。 有关详细信息,请参阅在 Visual Studio 中编写适用于 C/C++ 的单元测试。
添加单元测试项目:
打开包含待测试代码的解决方案。
右键单击“解决方案资源管理器”中的解决方案,然后选择“添加”>“新建项目”。
选择单元测试项目模板。
在本例中,选择 NUnit
将测试项目中的引用添加到包含待测试代码的项目中。
右键单击“解决方案资源管理器”中的项目,然后选择“添加”>“引用”。 (还可以从“引用”或“依赖项”节点右键单击菜单来添加一个引用。)
将代码添加到测试方法。