我需要测试一个没有任何功能的类吗?
在我的应用程序中,有两个类:一个是真正记录日志到数据库的记录器,另一个是一个虚拟记录器,它什么都不做(当日志记录被禁用时使用)。下面是整个虚拟记录器类的代码:
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中添加时,这个测试会提醒你。(当然前提是你记得为这个方法添加一个通用测试,但希望添加测试能成为一种习惯,即使你忘记了相关的类。)