我正在 CUnit 中对 C 进行一些单元测试。我对插入函数有一些先决条件,规定某些缓冲区参数不应超过特定的缓冲区大小。在插入函数中,我做了一些断言来防止这种情况。现在,我应该对这些预期的断言进行单元测试吗?
db.c:
#define BUFFER_SIZE 128
...
Node *delete(char *key, char *buffer_msg, Node *root) {
assert(sizeof(key) <= BUFFER_SIZE);
assert(sizeof(buffer_msg) <= BUFFER_SIZE);
assert(root != NULL);
...
}
test_db.c:
void test_delete_buffer_size_should_cast_assertion(void){
if (NULL != fileDb) {
//Arrange
char *key = "Test";
char buffer_msg[129];
Node *database = NULL;
//Act
database = create_db(fileDb);
//Assert
CU_ASSERT(delete(key, buffer_msg, database)); <-- ???
//Clean up
free(database);
database = NULL;
}
}
最佳答案
测试或不测试断言...
测试delete()
时,假设单元测试不测试断言,但断言编码错误。在更高级别的测试期间何时发现此错误?这击败了单元测试。
assert(sizeof(buffer_msg) >= BUFFER_SIZE); // incorrect assertion
assert(sizeof(buffer_msg) > BUFFER_SIZE); // correct assertion
建议在单元测试中测试断言。
关于c - 我应该对预期的断言进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27447444/