【发布时间】:2010-12-17 16:52:24
【问题描述】:
我正在尝试学习 TDD。我已经看到了一些例子和讨论,这些例子和讨论如何轻松地从最小的功能开始对咖啡自动售货机固件进行 TDD。这些例子要么是原始的,要么是经过深思熟虑的,很难马上说出来。但这是一个现实世界的问题。
链接器。
最简单的链接器读取一个目标文件,执行魔术,然后写入一个可执行文件。我不认为我可以进一步简化它。我确实相信链接器设计可能会进化,但我完全不知道从哪里开始。关于如何解决这个问题的任何想法?
嗯,可能整个链接器对于第一个单元测试来说是个太大的问题。我可以预先设想一些粗略的结构。链接器的作用是:
- 将对象文件表示为段的集合。段包含代码、数据、符号定义和引用、调试信息等。
- 构建参考图并决定要保留哪些段。
- 根据某些规则将剩余的段打包到一个连续的地址空间中。
- 重新定位引用。
我的主要问题是项目符号 1。2、3 和 4 基本上采用常规数据结构并基于某些配置将其转换为依赖于平台的混乱。我可以设计那个,而且这个设计看起来是可行的。但是 1,它应该选择一个依赖于平台的混乱,采用几种支持的格式之一,并将其转换为常规结构。
这个任务看起来很笼统。它发生在您需要支持多种输入格式的任何地方,无论是图像处理、文档处理,等等。是否有可能进行TDD?似乎要么测试太简单,我很容易把它改成绿色,或者它有点复杂,我需要实现整个对象/图像/文档格式阅读器,这是很多代码。而且没有中间立场。
【问题讨论】:
-
你以前写过链接器吗?如果您正在尝试学习 TDD,您可以考虑在相对熟悉的领域中的中小型项目中使用它。
-
是的,我之前写过一个链接器。但是假设我想写一个图像查看器。大家应该比较熟悉了。假设我想手动解析所有格式,而不是使用任何库。我想设计它是可测试的等。我如何使用 TDD 来处理它?我从哪里开始?您的第一个测试是哪一个?
标签: unit-testing tdd