彩票走势图

Visual Studio 使用教程:如何编写C ++ DLL的单元测试(上)

翻译|使用教程|编辑:况鱼杰|2020-04-02 13:39:23.063|阅读 570 次

概述:本演练介绍如何使用测试优先方法开发本机C ++ DLL。本教程内容比较多,分为两部分进行,此为上部分。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Visual Studio是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。

点击立即下载Visual Studio


本演练介绍如何使用测试优先方法开发本机C ++ DLL。(点击此处到达下部分内容)。基本步骤如下:

  • 创建一个本机测试项目。测试项目与DLL项目位于同一解决方案中。
  • 创建一个DLL项目。本演练将创建一个新的DLL,但是测试现有DLL的过程是相似的。
  • 使DLL函数对测试可见。
  • 迭代地扩充测试。建议一个“红色-绿色-重构”循环,其中代码的开发由测试主导。
  • 调试失败的测试。您可以在调试模式下运行测试。
  • 重构,同时保持测试不变。重构意味着在不更改其外部行为的情况下改进代码的结构。您可以这样做以提高代码的性能,可扩展性或可读性。因为目的不是要更改行为,所以在对代码进行重构更改时,请勿更改测试。这些测试有助于确保重构时不会引入错误。
  • 检查覆盖范围。当单元测试使用更多的代码时,它们会更加有用。您可以发现测试已使用了代码的哪些部分。
  • 将单元与外部资源隔离。通常,DLL依赖于您正在开发的系统的其他组件,例如其他DLL,数据库或远程子系统。将每个单元与其依赖项隔离开来测试很有用。外部组件会使测试运行缓慢,在开发过程中,其他组件可能不完整。

创建一个本机单元测试项目

  • 在“文件”菜单上,选择“新建”>“项目”。
  • Visual Studio 2017及更早版本:展开已安装>模板> Visual C ++>测试。Visual Studio 2019:将语言设置为C ++,然后在搜索框中键入"测试''。
  • 选择本机单元测试项目模板,或您喜欢的任何已安装框架。如果您选择其他模板(例如Google Test或Boost.Test),则基本原理相同,尽管某些细节有所不同。
  • 在本演练中,测试项目名为NativeRooterTest。
  • 在新项目中,检查unittest1.cpp。

Test project with TEST_CLASS and TEST_METHOD

注意:

  • 通过使用TEST_METHOD(YourTestName){...}定义每个测试。
  • 您不必编写常规的函数签名,签名是由宏TEST_METHOD创建的。宏生成一个实例函数,该函数返回void。它还生成一个静态函数,该函数返回有关测试方法的信息。该信息使测试浏览器可以找到该方法。
  • 使用TEST_CLASS(YourClassName){...}将测试方法分组为类。
  • 运行测试时,将创建每个测试类的实例。测试方法的调用顺序不确定。您可以定义在每个模块,类或方法之前和之后调用的特殊方法。
  • 验证测试是否在“测试资源管理器”中运行:
    • 插入一些测试代码:
TEST_METHOD(TestMethod1)
{
    Assert::AreEqual(1,1);
}

请注意,Assert类提供了几种静态方法,可用于验证测试方法中的结果。

    • 在“测试”菜单上,选择“运行”>“所有测试”,测试生成并运行,出现“测试资源管理器”,该测试将显示在“通过的测试”下。

Unit Test Explorer with one passed test

创建一个DLL项目

以下步骤显示如何在Visual Studio 2019中创建DLL项目。

  • 使用Windows桌面向导创建C ++项目:在解决方案资源管理器中右键单击解决方案名称,然后选择“添加”>“新建项目”。 将语言设置为C ++,然后在搜索框中键入“ windows”。 从结果列表中选择Windows桌面向导。
  • 在本演练中,该项目名为RootFinder。
  • 按创建。在下一个对话框的“应用程序类型”下,选择“动态链接库(dll)”,然后选中“导出符号”。
  • 导出符号选项会生成一个方便的宏,可用于声明导出的方法。

C++ project wizard set for DLL and Export Symbols

  • 在主体.h文件中声明一个导出的函数:

New DLL code project and .h file with API macros

声明符__declspec(dllexport)使该类的公共成员和受保护成员在DLL外部可见

  • 在主体.cpp文件中,为该函数添加一个最小主体:
// Find the square root of a number.
    double CRootFinder::SquareRoot(double v)
    {
        return 0.0;
    }

将测试项目耦合到DLL项目

  • 将DLL项目添加到测试项目的项目引用中:
    • 在解决方案资源管理器中右键单击测试项目节点,然后选择“添加”>“引用”。
    • 在“添加引用”对话框中,选择DLL项目,然后选择“添加”。

C++ project properties | Add New Reference

  • 在主体单元测试.cpp文件中,包括DLL代码的.h文件:
#include "..\RootFinder\RootFinder.h"
  • 添加使用导出功能的基本测试:
TEST_METHOD(BasicTest)
{
   CRootFinder rooter;
   Assert::AreEqual(
      // Expected value:
      0.0,
      // Actual value:
      rooter.SquareRoot(0.0),
      // Tolerance:
      0.01,
     // Message:
     L"Basic test failed",
     // Line number - used if there is no PDB file:
     LINE_INFO());
}
  • 构建解决方案。
  • 新测试将出现在“测试资源管理器”中。
  • 在测试资源管理器中,选择“全部运行”。

Unit Test Explorer - Basic Test passed

您已经设置了测试和代码项目,并确认可以运行在代码项目中运行功能的测试。现在您可以开始编写实际的测试和代码。

本文内容较多,分为上下两部分进行介绍,(点击此处到达下部分内容)


想要购买Visual Studio正版授权,或了解更多产品信息请点击

慧聚IT



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP