【发布时间】:2020-11-30 08:55:19
【问题描述】:
我一直在研究 Kent Beck 的 Test-Driven Development By Example,更具体地说是 xUnit 示例(第 18-24 章)。我对拆解功能有一些疑问。最初,测试运行的流程是通过以下方式实现为类TestCase 上的方法run()
def run(self):
result = TestResult()
result.testStarted()
self.setUp()
method = self.getattr(self, self.name)
method()
self.tearDown()
return result
完成此操作后,他将作为练习留给读者更改 run() 方法,以便即使在 method() 失败时也会执行拆卸逻辑。
然而,在下一章(处理失败)中,方法 run() 被扩展以记录测试失败:
def run(self):
result = TestResult()
result.testStarted()
self.setUp()
try:
method = self.getattr(self, self.name)
method()
except:
result.testFailed()
self.tearDown()
return result
在此编辑之后,有关拆卸逻辑的项目仍在待办事项列表中打开,但对我来说问题似乎已解决。 except 子句尽可能通用,result.testFailed() 操作永远不会抛出异常。因此在我看来,无论method() 可以做什么,拆卸逻辑都会始终被执行。我可以想象将拆解放在finally-clause 中以更好地表示意图并更加稳健地应对testFailed() 的变化,但是当run() 具有这种形式时,此操作(以及因此练习)是否多余?
【问题讨论】:
标签: unit-testing tdd xunit