Есть ли правильный способ эффективно использовать TDD (разработка, управляемая тестированием) для частных переменных и функций?
Я тестирую новый кольцевой буферный модуль. Параметры буфера хранятся в структуре. Эти элементы структуры должны быть закрытыми, поскольку клиенту не нужно к ним прикасаться. НО из-за сокрытия членов тестирование становится намного сложнее. Если формат структуры является общедоступным в заголовке, я могу напрямую проверить, указываю ли я на массив хранения, что мой индекс чтения правильный, что мой индекс записи правильный и т. Д. Если частный, я могу только проверить интерфейс, что мне, очевидно, нужно сделать, но проверка скрытых функциональных возможностей кажется медленной и неэффективной.
buf.h
typedef struct circBuf circBuf_t;
buf.c
struct circBuf {
privateMember_1;
...
privateMember_n;
};
Должен ли я включить шпиона в свою тестовую функцию? то есть:
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 для частных переменных и функций?