添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
无邪的单杠  ·  c# - How to put delay ...·  1 年前    · 
拉风的黄瓜  ·  Visual Studio 2022 ...·  1 年前    · 
安静的手套  ·  docker - How can I ...·  1 年前    · 

适用范围: yes Visual Studio no Visual Studio for Mac no 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

  • 将测试项目中的引用添加到包含待测试代码的项目中。

    右键单击“解决方案资源管理器”中的项目,然后选择“添加”>“引用”。 (还可以从“引用”或“依赖项”节点右键单击菜单来添加一个引用。)

  • 将代码添加到测试方法。

  •