在 C 赛道上测试

了解如何在 Exercism 上测试你的 C 练习


每道练习都附带单元测试和一个 Make 构建配方。 实现由你来提供。

每个测试文件都需要与你的实现链接,生成一个运行测试的控制台可执行文件。 运行这个测试可执行文件时,每个失败的测试都会打印一条消息;测试失败时还会返回非零的退出状态。

完成一道练习的步骤如下:

  • 用 Make 创建初始构建
  • 对每个单元测试:
    • 删除 TEST_IGNORE() 这一行。
    • 修复所有编译错误,让测试能够失败。
    • 只实现刚好能让测试通过的最少代码。
    • 重构你的实现,提高可读性、减少重复等。

编译并运行测试

每道练习都会带一个 makefile 文件,以及一个包含单元测试的 .c 文件。 你不需要修改 Make 文件。 提供的 Make 文件假设你的实现是一个以练习名命名的头文件(.h)和一个源文件(.c)。

例如,练习 bob 要求实现放在 bob.h 和 bob.c 中。 如果练习名里包含连字符,源文件则假定使用下划线,所以 word-count 对应的是 word_count.h 和 word_count.c。 你可能觉得自己的实现足够简单,完全可以只放在头文件里,这种情况下就可以省略 .c 文件。

在运行 Make 之前,先创建好你的初始实现文件。 如果运行练习 bob 的 Make 时还没有 bob.h 和 bob.c 这两个文件,Make 就会报错,提示找不到文件。 这些文件可以是空的,但必须存在。

构建你的代码

构建代码最简单的方式,就是在命令行(CLI)里使用 make。 在 Linux 上,CLI 可以在 bash 或类似的命令行里使用;在 MacOS 上,请使用 Terminal。 在 Windows 10 上,可以使用 Windows Subsystem for Linux (WSL) 的 Bash。

假设当前目录就是练习文件夹,那么操作如下:

$ make

这会编译你的代码,并运行测试。

makefile 里还带有一个构建目标,用来检查一些常见错误,比如内存泄漏和数组越界访问。 要运行这些检查,请在命令行里使用:

$ make memcheck

清理

构建之后要清理,你可以让 make 删除所有构建输出,包括可执行文件:

$ make clean

MacOS 上的另一种构建方式

在 MacOS 上,你也可以使用 Xcode。 要构建代码,请从工具栏中选择 Build。