通过阅读说明,我了解到在TDD中测试是在编写函数之前完成的,而在单元测试中则是在编写函数之后进行的。
这是主要区别吗,还是两个术语不能这样比较。也许,单元测试是TDD不可或缺的一部分。
通过阅读说明,我了解到在TDD中测试是在编写函数之前完成的,而在单元测试中则是在编写函数之后进行的。
这是主要区别吗,还是两个术语不能这样比较。也许,单元测试是TDD不可或缺的一部分。
Answers:
单元测试是指什么,你正在测试,TDD到时您正在测试。
两者是正交的。
单元测试意味着测试行为的单个单元。单个行为单位是可以单独进行测试的最小行为单位。(我知道这两个定义是循环的,但是在实践中它们似乎工作得很好。)
您可以在编写代码之前,编写代码之后或编写代码时编写单元测试。
TDD的意思是(同样,很明显)让您的测试驱动您的开发(和您的设计)。您可以通过单元测试,功能测试和验收测试来做到这一点。通常,您同时使用这三个。
TDD的最重要的部分是中间d。您让测试来驱动您。测试告诉您做什么,下一步做什么。他们告诉您API将会是什么,设计是什么。(这很重要:TDD并不是首先编写测试。很多项目首先编写测试,但不练习TDD。首先编写测试只是能够让测试推动开发的前提条件。)
您可以进行单元测试,而无需进行测试驱动的开发。但是,如果不使用单元测试,就无法进行测试驱动的开发。
在进行传统的单元测试时,您需要在编写代码之后编写测试。
测试驱动的开发方法是在编写代码之前先编写单元测试。
与简单的单元测试相比,TDD(IMHO)最有趣的优点是:
TDD和单元测试是两个非常具体的术语,经常被滥用。
TDD正在编写将失败的测试,然后编写使它运行所需的最少代码量,然后重构代码以使其干净。这是按周期完成的,失败->通过->重构,为每个已知的代码需求添加新的测试。最近,TDD在该周期中已变得更加具体地涉及编写单元测试,以将其与ATDD(BDD的子集)区分开来,后者是在类似周期中编写验收测试。
单元测试是关于在小的隔离单元中测试代码。这里常见的困惑是认为,如果您使用的是单元测试工具(例如xUnit或Rspec)来运行编写单元测试的测试。这不一定是真的。这些工具可用于使用Selenium框架运行测试,在这种情况下,您将使用单元测试运行程序编写验收测试。单元测试是非常专门的测试,它专注于一小部分逻辑,为了提高速度与其他所有事物隔离开来(以便您可以经常运行它们并获得有关新错误的快速反馈)。
所有出色的答案。我只想补充一点,单元测试倾向于将“单元”视为一个很小的组成部分,而TDD会扩大规模以包括集成和验收测试。
(某些TDD变体将“单位”视为实现所需功能的最小增量步骤。)