gpt4 book ai didi

c++ - 需要对返回常量值的方法编写测试吗?

转载 作者:太空狗 更新时间:2023-10-29 21:22:52 24 4
gpt4 key购买 nike

我对测试技术不是很熟悉,所以我需要帮助解决这样的问题:比如三个类(C1 C2 C3)实现了接口(interface)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' };

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

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

最佳答案

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

您说该接口(interface)有 3 个实现。

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

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

如果接口(interface)施加了任何这样的限制,您可以/应该/可以测试这些实现是否真的符合该接口(interface)的要求。

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

但是,最后要注意的是,切记不要做得太过火。测试是一种工具,而不是目的。如果没有需求,那么就没有什么可以测试的,无论实现是干净的还是肮脏的。始终使用适当的工具来获得所需的效果!

关于c++ - 需要对返回常量值的方法编写测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com