风诰杂记

天下有风,姤。后以施命诰四方。

0%

根据测试来完成产品代码的编码

我在上篇文章中建立了 LedDriver.c 文件。同时,也简单的编写了测试用例列表。下面我根据之前的测试用例列表,一步一步的来完成测试用例的编写。

这里在把测试用例摘抄一遍:

1
2
3
4
5
6
7
8
9
在驱动程序安装后关闭所有的 LED
可以打开单一的 LED
可以关闭单一的 LED
可以打开/关闭多个 LED
打开所有 LED
关闭所有 LED
查询 LED 状态
检查边界值
检查界外值

操作单一的 LED

打开单一的 LED

在 LedDriverTest.c 文件中的相应位置增加测试用例 TurnOnLedOne 如下:

1
2
3
4
5
6
7
8
TEST(LedDriver, TurnOnLedOne)
{
uint16_t virtualLeds;

LedDriver_Create(&virtualLeds);
LedDriver_TurnOn(1);
TEST_ASSERT_EQUAL_HEX16(1, virtualLeds);
}

构建好项目之后,必定有编译错误。这就是由 TDD 驱动我们来进行产品代码开发的时候了。在此之前的 LED 驱动程序中,并没有 LedDriver_TurnOn 这个接口及实现。所以,需要在 LedDriver.h 头文件中增加接口 LedDriver_TurnOn 的原型,在 LedDriver.c 源文件中增加 LedDriver_TurnOn 的函数实现。根据 “TDD 三条原则” ,这里的实现直接写成空函数即可。

1
2
3
void LedDriver_TuenOn(int ledNumber)
{
}

再重新对项目进行构建,运行代码后可以发现工程可以成功通过单元测试。

到这里,根据 TDD 的开发模式,我们就完成了一部分产品代码的开发。测试用例列表中的其他测试用例在此我就不再进行一一的说明了。