我需要测试一个没有任何功能的类吗?

4 投票
15 回答
1056 浏览
提问于 2025-04-15 12:54

在我的应用程序中,有两个类:一个是真正记录日志到数据库的记录器,另一个是一个虚拟记录器,它什么都不做(当日志记录被禁用时使用)。下面是整个虚拟记录器类的代码:

class DummyLog(object):
    def insert_master_log(self, spec_name, file_name, data_source,
                          environment_name):
        pass
    def update_master_log(self, inserts, updates, failures, total):
        pass

一方面,我可能应该放手不去测试它,因为实际上没有什么代码可以测试。但另一方面,我的“测试驱动”本能告诉我,这只是一个借口,而且这个类的简单性意味着我应该愿意去测试它。我只是有点难以想到该测试什么。

有什么想法吗?还是我就放弃,不写任何测试?

15 个回答

4

如果它不会失败,那就没有什么好测试的。

测试的结果至少需要有一个成功的状态和一个失败的状态。如果你输入的任何内容都能得到成功的结果,那就说明你根本无法设计出一个会失败的测试。

12

如果你不测试,怎么能真的知道它没有任何作用呢?

抱歉,我忍不住开个玩笑。说真的,我建议你去测试一下,因为总有一天它可能会有更多的功能?

4

当然,你可以测试一个什么都不做的类。你测试的就是它确实什么都不做。

在实际操作中,这意味着:

  • 这个类存在并且可以被实例化;
  • 使用它的时候不会抛出异常;调用每个方法并简单地确认它们都能成功执行。这也可以用来检查这个类是否确实定义了所有应该有的方法。

不要在DummyLog上运行这个测试;把它当作一个通用测试,应用到所有的日志记录器上。当你一年后在真正的Log类中添加另一个方法,却忘了在DummyLog中添加时,这个测试会提醒你。(当然前提是你记得为这个方法添加一个通用测试,但希望添加测试能成为一种习惯,即使你忘记了相关的类。)

撰写回答