需要将测试写入返回常量值的方法吗?

时间:2013-10-31 19:06:59

标签: c++ unit-testing testing

我对测试技术不是很熟悉,所以我需要帮助解决这个问题: 例如,三个类(C1 C2 C3)实现了接口I

class I
{
  char get_Char() const = 0;
} 

C1::get_Char() const { return 'a' };
C2::get_Char() const { return 'b' };
C3::get_Char() const { return 'c' };

我应该在测试中测试这种方法吗?

我想 - 是的,但我找不到确认或反驳我的意见。你能指出我需要测试什么,不测试什么的好理论。

1 个答案:

答案 0 :(得分:3)

我写了一条评论,但后来又有了一个重要的想法。

你说该接口有3个实现。

该界面是什么状态?当你有多个实现时,很可能只是实现该接口不足以“ok”。那个界面是否暗含需要某些东西?

您的示例界面返回字符。这些人物可以是任何人吗?可以是\ 0(null-char,字符串结尾)?它可以是\ xFF(常见的EOF字符)吗?可以是ąęćźń(第8位设置的非纯ASCII字符取决于代码页)吗?他们被允许抛出异常吗?

如果界面强加任何此类限制,您可以/应该/可以测试实现是否真的符合该接口的要求。

请注意,我没有说要针对其内部工作来测试实现。内部运作说这是一个常数。我说要验证他们是否成功实现了接口的要求。如果这些类的唯一要点是实现该接口并提供数据,则可以检查该数据是否有效。半年后,您可以更改这些数据类并退出有效域,即使它是不变的。您可以更改返回'c'以返回'\ xcc',这可能是不可接受的。

但是,正如最后一点,请记住不要过度做事。测试是一种工具,而不是目标。如果没有要求,那么无论实施是干净还是脏,都无需测试。始终使用适当的工具来获得所需的效果!