是否有适当的方法来有效地针对私有变量和函数进行 TDD(测试驱动开发)?
我正在测试一个新的循环缓冲区模块。缓冲区参数保存在结构中。这些结构成员应该是私有的,因为客户端不需要接触它们。但是通过隐藏成员,测试变得更加困难。如果结构格式在标头中是公共的,我可以直接查看以确保我指向存储数组,我的读取索引是否正确,我的写入索引是否正确等等。如果是私有的,我只能测试界面,我显然需要这样做,但验证底层隐藏功能感觉缓慢且效率低下。
缓冲区
typedef struct circBuf circBuf_t;
buf.c
struct circBuf {
privateMember_1;
...
privateMember_n;
};
我应该在我的测试功能中放置一个间谍吗?IE:
test_buf.c
#include "buf.h"
struct spy_circBuf {
privateMember_1;
...
privateMember_n;
};
void test_circBufInit(void)
{
circBuf_t * p_testCircBuf;
struct spy_circBuf * p_spy;
p_testCircBuf = CircBuf_Init (initVar_1, ...);
p_spy = ((struct spy_circBuf *)p_testCircBuf);
TEST_ASSERT_EQUAL(p_spy->privateMember_1, initVar_1);
}
有没有更好的方法对私有变量和函数进行 TDD?