肯特·贝克Kent BeckxUnit示例中的拆解逻辑

问题描述

我一直在研究Kent Beck的示例驱动测试开发,尤其是xUnit示例(第18-24章)。我对拆卸功能有一些疑问。最初,测试运行流程是通过以下方法在类run()上作为方法TestCase实现的

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子句中,以更好地表示意图,并且对testFailed()中的更改更加健壮,但是当{{1 }}有这种形式吗?

解决方法

本练习可以帮助您学习。它为“应对失败”做好了准备。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...