我为某些方法foo()
编写了单元测试,可以简化为
int foo(Bar *obj)
{
char buffer[2];
readDataIntoBuffer(buffer, 2);
return obj->processData((int*)buffer);
}
foo()
的问题是我的平台上sizeof(int)
为4,因此它读取超出缓冲区的末尾。
在我的单元测试中,我验证processData
被调用(在模拟版本的Bar上),指针指向期望值。但我的问题是它很脆弱。我的猜测是,它取决于缓冲区后面两个字节中内存的某些随机内容。如果它们恰好为零,则测试通过,但如果它们没有,则失败,因为processData
被调用一些随机值。
如何确保我的测试始终失败?我是否完全正确地测试了processData
被调用的预期值或者我不应该关心?
如果重要,我使用的是gcc版本4.8.4 googletest和googlemock。