# 单元测试相关知识点 ## 概念 - 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。编写单元测试是用来验证这段代码的行为是否与我们期望的一致。 ## 单元测试 - 单元测试创建 - 启动Visual Studio 首先,打开Visual Studio并创建一个新的解决方案或打开现有的解决方案。确保你的项目已经准备好进行测试。 - 添加测试项目 - 在解决方案资源管理器中,右键点击解决方案名称,选择“添加” -> “新建项目”。在弹出的对话框中,选择“测试”类别,然后选择“单元测试项目”。为测试项目命名并点击“创建”。 - 引用被测试项目 在新创建的测试项目中,右键点击“引用”并选择“添加引用”。在弹出的对话框中,选择你的主要项目,这样测试项目就能访问主要项目中的类和方法。 - 代码覆盖度 1. 行覆盖 行覆盖(又叫语句覆盖)就是通过设计一定量的测试用例,保证被测试的方法每一行代码都会被执行一遍。 2. 分支覆盖 判定覆盖的含义就是代码里每一个判定都要走一次true,一次false。 3. 条件覆盖 条件覆盖和判定覆盖类似,不过判定覆盖着眼于整个判定语句,而条件覆盖则着眼于某个判断条件,条件覆盖需要保证每个判断条件的true false都要覆盖到,而不是整个判定语句。 4. 路径覆盖 ![image-20250711131114258](./pictures/image-20250711131114258.png) 路径覆盖这个顾名思义就是覆盖所有可能执行的路径。 ``` 路径1:1->3->5; 路径2:1->2->5; 路径3: 1->3->4; 路径4: 1->2->4; ``` - 运行性能 ![image-20250710140456749](./pictures/image-20250710140456749.png) - 测试样例书写 ![image-20250710140237090](./pictures/image-20250710140237090.png) 在该代码框架内写单元测试的程序。 - 单元测试的调试 ![image-20250710140347052](./pictures/image-20250710140347052.png) ![image-20250711131643794](./pictures/image-20250711131643794.png) **常见的断言** | 函数名 | 说明 | 示例 | | :-------------------------: | :------------------------------: | :------------------------------------: | | `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");` |