プライベート変数と関数に対して効率的に 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 を実行するより良い方法はありますか?