You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.9 KiB

单元测试相关知识点

概念

  • 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。编写单元测试是用来验证这段代码的行为是否与我们期望的一致。

单元测试

  • 单元测试创建

    • 启动Visual Studio

      首先,打开Visual Studio并创建一个新的解决方案或打开现有的解决方案。确保你的项目已经准备好进行测试。

    • 添加测试项目

    • 在解决方案资源管理器中,右键点击解决方案名称,选择“添加” -> “新建项目”。在弹出的对话框中,选择“测试”类别,然后选择“单元测试项目”。为测试项目命名并点击“创建”。

    • 引用被测试项目

      在新创建的测试项目中,右键点击“引用”并选择“添加引用”。在弹出的对话框中,选择你的主要项目,这样测试项目就能访问主要项目中的类和方法。

  • 代码覆盖度

    1. 行覆盖

      行覆盖(又叫语句覆盖)就是通过设计一定量的测试用例,保证被测试的方法每一行代码都会被执行一遍。

    2. 分支覆盖

      判定覆盖的含义就是代码里每一个判定都要走一次true,一次false。

    3. 条件覆盖

      条件覆盖和判定覆盖类似,不过判定覆盖着眼于整个判定语句,而条件覆盖则着眼于某个判断条件,条件覆盖需要保证每个判断条件的true false都要覆盖到,而不是整个判定语句。

    4. 路径覆盖

      image-20250711131114258

      路径覆盖这个顾名思义就是覆盖所有可能执行的路径。

      路径1:1->3->5;
            
      路径2:1->2->5;
            
      路径3: 1->3->4;
            
      路径4: 1->2->4;
      
  • 运行性能

    image-20250710140456749

  • 测试样例书写

    image-20250710140237090

    在该代码框架内写单元测试的程序。

  • 单元测试的调试

    image-20250710140347052

image-20250711131643794

常见的断言

函数名 说明 示例
Assert::IsTrue(x) 判断表达式为 true Assert::IsTrue(5 > 2);
Assert::IsFalse(x) 判断表达式为 false Assert::IsFalse(5 < 2);
Assert::AreEqual(a, b) 判断 a == b Assert::AreEqual(7, add(2, 5));
Assert::AreNotEqual(a, b) 判断 a != b Assert::AreNotEqual(3, add(1, 1));
Assert::Fail() 强制测试失败(用于调试或占位) Assert::Fail(L"Not implemented");