AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 37
优先测试什么
C++ SELF
等级 37,
课时 0
我们来看看,如何在教学用 C++ 项目中选择最“划算”的第一批测试:为什么应该先从纯函数(输入 → 输出)、解析器(字符串 → 数据)和业务规则入手,而不是去检查
std::cout
的打印。我们将学习把
IO
与逻辑分离,使用
assert
快速起步,并为诸如
parse_int
、
parse_command
、
add_task
和
mark_done
这样的函数构建确定性的检查。
AAA: Arrange‑Act‑Assert 与 表格式用例集合
C++ SELF
等级 37,
课时 1
解析如何通过结构化的
AAA
(
Arrange
→
Act
→
Assert
)和表格驱动(table‑driven)的用例集合,使单元测试更可读、更易扩展。通过
std::optional<int>
、解析器
parse_amount()
和解析命令
"add 250 lunch"
的示例,我们学习如何把数据准备与动作和断言分离,避免像在
nullopt
上调用
value()
这样的陷阱,并添加诊断信息以便立即看出哪个用例失败。
Catch2 / doctest — 测试结构
C++ SELF
等级 37,
课时 2
我们来拆解 C++ 中基于 Catch2/doctest 的自动化测试是如何组织的:为什么需要测试框架而不是只用
assert
,
test runner
是如何工作的,以及为什么测试有“自己的”
main
;如何避免出现“两个
main
”或“零个
main
”;
CHECK
和
REQUIRE
有什么区别;如何编写表格驱动测试并通过
INFO
添加上下文;以及如何通过一个小型
Expense Tracker
示例把“生产”代码与测试分离开来。
CTest — 将测试作为构建的一部分运行
C++ SELF
等级 37,
课时 3
解析为什么在 CMake 项目中需要
CTest
,即便测试已经用
doctest
/
Catch2
编写:什么是“以 exit-code 形式运行的测试”、如何通过
enable_testing()
接入测试并用
add_test
注册测试、如何从构建目录正确运行
ctest
、在测试失败时查看输出以及如何按名称过滤测试集合。
CI 与流水线 configure → build → test
C++ SELF
等级 37,
课时 4
我们来讲解什么是
CI
(持续集成),以及为何它的“语言”不是
YAML
,而是进程的退出码(
exit code
):
0
表示成功,非
0
表示失败。通过
CMake
/
CTest
的示例理解三个步骤
configure
→
build
→
test
的含义,构建本地迷你流水线并分析那些导致“本地通过”但在 CI 上变红的常见错误。
Please enable JavaScript to continue using this application.