3

我对测试技术不是很熟悉,所以我需要帮助解决这样的问题:例如,三个类(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' };

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

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

4

1 回答 1

3

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

您说该接口有 3 个实现。

该接口状态是什么?当您有多个实现时,很可能仅实现该接口还不足以“确定”。该接口是否隐含需要保留一些东西?

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

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

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

但是,最后要注意的是,记住不要做太多事情。测试是一个工具,而不是一个目标。如果没有要求,那么无论实现是干净还是肮脏,都无需测试。始终使用适当的工具来获得所需的效果!

于 2013-10-31T19:19:43.607 回答