第 5 章:把项目交付出去——测试、构建与复盘

用临时目录完成生命周期测试,再构建跨平台可执行文件,为这个小项目画上可验证的句号。

已发布文章工程实践入门3 分钟阅读发布于 2026年9月4日更新于 2026年9月4日
文章目录
  1. 测试真正保护什么
  2. 使用临时目录隔离数据
  3. 验证输出和最终状态
  4. 运行质量检查
  5. 构建可执行文件
  6. 回看这次完整闭环
项目路线Go 本地待办清单 CLI5 / 5
  1. 00项目总览
  2. 01第 1 章:先定义完成——需求、边界与验收标准准备
  3. 02第 2 章:搭起骨架——任务模型与程序边界实现
  4. 03第 3 章:让数据留下来——JSON 存储与安全替换实现
  5. 04第 4 章:完成核心功能——添加、查看、完成与删除实现
  6. 05第 5 章:把项目交付出去——测试、构建与复盘验证
LOCAL NOTE高亮并记笔记
0 / 1000 · 只保存在这台设备
READER NOTES第 5 章:把项目交付出去——测试、构建与复盘》的本机笔记

测试真正保护什么

这个项目最重要的不是某个独立函数,而是连续命令共享同一份数据后仍然正确。因此主测试覆盖完整生命周期:添加两条任务、完成第一条、查看列表、删除第一条,再读取文件确认结果。

项目测试矩阵

使用临时目录隔离数据

dataPath := filepath.Join(t.TempDir(), "tasks.json")
fixedTime := time.Date(2026, 9, 4, 10, 0, 0, 0, time.UTC)
app := App{
    Store: Store{Path: dataPath},
    Now:   func() time.Time { return fixedTime },
}

t.TempDir() 为每个测试创建独立目录,并在测试结束后清理。固定时间让 JSON 内容和断言保持稳定。

验证输出和最终状态

for _, arguments := range [][]string{
    {"add", "学习", "Go"},
    {"add", "编写测试"},
    {"done", "1"},
} {
    if err := app.Run(arguments, &output); err != nil {
        t.Fatalf("Run(%v) error = %v", arguments, err)
    }
}

随后检查列表同时包含 [x] #1[ ] #2。删除 #1 后直接通过 Store.Load 检查只剩编号为 2 的任务。

另外两组测试分别保护输入边界和损坏 JSON。它们能防止未来重构时把“错误输入被接受”或“损坏文件被当成空列表”悄悄带回来。

运行质量检查

在项目目录执行:

gofmt -w .
go vet ./...
go test ./...

三条命令分别检查格式、常见静态问题和行为结果。不要只运行最后一条。

构建可执行文件

当前平台:

go build -o todo .

交叉构建示例:

GOOS=linux GOARCH=amd64 go build -o dist/todo-linux-amd64 .
GOOS=darwin GOARCH=arm64 go build -o dist/todo-darwin-arm64 .

PowerShell 构建 Windows:

$env:GOOS="windows"
$env:GOARCH="amd64"
go build -o dist/todo-windows-amd64.exe .

回看这次完整闭环

你已经经历了一个小型但真实的项目过程:

  1. 用用户故事约束范围。
  2. 用模型和边界组织代码。
  3. 用持久化让数据跨进程存在。
  4. 用错误处理保护用户数据。
  5. 用测试证明关键行为。
  6. 用构建产物完成交付。

下一次做 Web API、桌面应用或更复杂系统时,这个顺序仍然成立。技术栈会变,但“先定义完成,再逐步验证”的方法不会变。

JARVIS · 当前文章

有哪里没看懂?可以只问这篇。

Jarvis 会限定在《第 5 章:把项目交付出去——测试、构建与复盘》及其公开关联内容中检索,并把引用定位回原文章节。

JARVIS / ARTICLE针对《第 5 章:把项目交付出去——测试、构建与复盘》提问
当前范围第 5 章:把项目交付出去——测试、构建与复盘不会悄悄扩大到全站
0 / 1000

准备好了。当前只会围绕第 5 章:把项目交付出去——测试、构建与复盘回答。

RELATED BUILDS

关联项目

Go 本地待办清单 CLI

使用 Go 标准库完成一个支持添加、查看、完成和删除任务的命令行工具,并通过 JSON 文件持久化、自动化测试和跨平台构建形成完整交付闭环。

evidence积极维护

READER SIGNAL

这篇内容对你有帮助吗?

不需要登录。你的反馈会直接进入作者待处理列表。