如果你是在TDD迭代的中间,你怎么知道哪些测试失败,因为现有的代码是真正的不正确和失败,因为无论是测试本身或功能避风港尚未实施?请不要说,“你只是不在乎,因为你必须解决这两个问题。”我准备好移过那个心态。TDD做法:真正的失败和未执行的功能
我编写测试一般的做法如下:
首先,我建筑师测试套件的总体结构,全部或部分转载。那就是 - 我只会写下测试的名称,提醒我想要实现的功能。我通常(至少在python中)只是从每个测试只有一行开始:self.fail()。通过这种方式,我可以通过列出我认为我想要测试的每个功能 - 比如说,一次11个测试来启用意识流。
其次,我选择一个测试,并实际编写测试逻辑。
第三,运行测试转轮和看到11个故障 - 10,简单地self.fail()和1这是一个真正的AssertionError。
第四,我编写了导致我的测试通过的代码。
第五,运行测试转轮和看到1通和10级的故障。
第六,我转到步骤2
理想的情况下,而不是看到的通行证,失败和异常处理方面的测试,我想有一个第四种可能性:NotImplemented。
这里最好的做法是什么?
这属于程序员.se – Ikke
写入大量的单元测试才能让他们通过是一个巨大的TDD *反*模式 - 所以“最佳做法”是“不要这样做”。当所有测试都通过时,很容易解释测试结果。正如你发现的,当很多测试失败时,解释测试结果并不容易。 (注意:我不是Python开发人员,但是我在其他语言中完成了很多TDD。) –
那么最好的模式是什么?思考一个功能,并在现场为其编写测试?如果这是唯一可接受的TDD模式,我会完全拒绝TDD。我很重视能够以测试名称的形式输出大量未来的单位,然后一次一个地写出测试内容。这是一个非常主流的方法,至少在django社区。但是,使用@expectedFailure修饰器不是AFAIK。 – jMyles