【发布时间】:2013-10-31 19:06:58
【问题描述】:
我对测试技术不是很熟悉,所以我需要帮助解决这样的问题: 例如,三个类(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' };
我应该在我的测试中测试这个方法吗?
我认为 - 是的,但我找不到我的猜测的确认或反驳。你能指出我需要测试什么不需要测试的好理论吗?
【问题讨论】:
-
我没有任何理论可以说明,所以我将其作为评论。但通常,当您测试时,您会测试 something。如果输入发生变化会发生什么?每个可能的逻辑分支会发生什么?返回值是否计算正确?在您的情况下,您没有输入,没有逻辑分支,也没有机会更改返回值。我看不出有什么要测试的,但我相信其他人会告诉你和我,我错了。
-
你不测试“只是因为你可以”。您进行测试是为了验证您的代码,或者作为将来维护它的帮助,或者因为某些合同需要实现 90/95/100% 的代码覆盖率。根据您的需要和原因,您会找到答案;)您不需要验证常量,除非常量可以是用户定义的。除非您将来可以更改它以引发异常并破坏某些内容,否则您不需要维护“return 5”。如果您需要 100% 的覆盖率,则必须对其进行测试。等等。
-
@ScottMermelstein:实际上,作为其他人之一,我同意,除非 100% 是目标 :)
-
是的,您应该为所有三个派生类编写测试。这将揭示上面显示的代码中的错误。
标签: c++ unit-testing testing