【问题标题】:Teardown logic in Kent Beck's xUnit exampleKent Beck 的 xUnit 示例中的拆卸逻辑
【发布时间】: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


    【解决方案1】:

    这是一项旨在帮助您学习的练习。它为“应对失败”做准备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-24
      • 2013-04-22
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      相关资源
      最近更新 更多