有沒有一種合適的方法可以有效地針對私有變量和函數進行TDD(測試驅動開發)?Test Driven Development with hidden variables and methods in C
我正在測試一個新的循環緩衝模塊。緩衝區參數保存在一個結構中。這些結構成員應該是私有的,因爲客戶端不需要觸摸它們。但通過隱藏成員,測試變得更加困難。如果結構格式在標頭中是公共的,我可以直接查看以確保我指向存儲陣列,我的讀取索引是正確的,我的寫入索引是正確的,等等。如果是私有的,我只能測試界面,我顯然需要這樣做,但驗證底層的隱藏功能感覺很慢並且效率低下。
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?
請參閱http://googletesting.blogspot.com/2013/03/testing-on-toilet-testing-state-vs.html 如果您無法測試狀態,請測試您的對象與其他對象的交互。 –