使用数据类型输入设置为MAX + 1值的单元测试

时间:2017-03-17 07:05:30

标签: c unit-testing

我正在使用语言对代码进行单元测试,我想如果我不使用MAX+1数据类型值的测试输入,可能会有什么危害。

通常,如果值溢出其MAX容量,会将变量值包装到最小值。例如:如果在char之后0-255(范围:255)增加,则会0

是否有任何示例,如果未完成测试MAX+1如果值回滚到数据类型的MIN值,那将会非常有害?

1 个答案:

答案 0 :(得分:1)

使用MAX+1进行测试是否有意义取决于您是否对MAX+1的功能的行为有期望,以防将来可能发生某些潜在变化。假设一个函数foo(uint8_t u):通常应避免使用参数为256的函数,并且您可能会得到警告。尽管如此,它仍然是允许的,并且意味着0的值实际上已传递给该函数。

这里的情况是,类型不匹配由编译器以导致值更改的方式处理,即在modulo 256操作的隐式计算中。如果您出于某种原因拥有依赖于此的代码,那么拥有相应的测试用例就很有意义。这样可以避免参数类型从utf8_t变为utf16_t的情况:这种变化意味着将原来的隐式modulo 256转换为隐式{{1} }。

请注意,在我看来,将类型转换用于模运算并不是一个好习惯。也就是说,如果呼叫者想要进行modulo 65536操作,则呼叫者应使其像呼叫modulo 256中那样显式。