【发布时间】:2015-02-26 08:47:21
【问题描述】:
这实际上与语言无关。但我会在 python 中给你上下文。
我有这个父类
class Mammal(object):
def __init__(self):
""" do some work """
def eat(self, food):
"""Eat the food"""
way_to_eat = self._eating_method()
self._consume(food)
def _eating_method(self):
"""Template method"""
def _consume(self, food):
"""Template method"""
这里eat 是唯一的公共方法,而_consume 和_eating_method 实际上是受保护的方法,将由子类实现。
如果你只写了Mammal 类,你会测试什么?
显然所有 4 种方法。
现在让我们介绍一个孩子
class Tiger(Mammal):
def _eating_method(self):
"""Template method"""
def _consume(self, food):
"""Template method"""
看看这堂课。它只有 2 个 protected 方法。
我应该测试Tiger 的所有 4 个方法(包括 2 个继承的)还是只测试引入的更改(仅覆盖 2 个方法)?
理想情况是什么?
【问题讨论】:
-
这取决于。通常,
eat方法会使用_eating_method和_consume的所有可能结果进行测试。所以只需要测试改变的方法。
标签: python unit-testing oop language-agnostic private