Open freewind opened 8 years ago
在《测试驱动开发实用指南》第四章第58页,专门讲解了test, test case, test suite, fixture它们之间的关系,建议阅读。
首先把一个类所对应的所有测试放在同一个Test文件中,这种做法是错误的。还有一些IDE提供了工具,可以快速针对一个类的所有方法创建相应的测试,这种做法也是错误的。
我们应该针对行为来驱动出我们的代码。每一个Test类都是一个TestCase,它里面包含的每一个方法测试的是一个单一的行为。一个TestCase中的所有测试方法,都共享相同的预设条件。这些预设条件是彼此关联的,而不是分别用于不同的测试方法的。如果你发现你的setup()方法里定义的数据有的用在这个测试方法里,有的用在另一个测试方法里,则说明你的这个测试类应该被分成多个。
TestSuite可以包含多个TestCase以及其它的TestCase,可以让我们一次性运行一堆测试。而package是与结构相关的一个组织方式。
这样看来,由TDD驱动出来的代码,一个类可能对应0个或者1个或者多个Test类(即TestCase),而package我们通常在两边保持一致。
那是否意味着一个测试类中只能包含一个测试对象(被测试的类)?
在《测试驱动开发实用指南》第四章第58页,专门讲解了test, test case, test suite, fixture它们之间的关系,建议阅读。
首先把一个类所对应的所有测试放在同一个Test文件中,这种做法是错误的。还有一些IDE提供了工具,可以快速针对一个类的所有方法创建相应的测试,这种做法也是错误的。
我们应该针对行为来驱动出我们的代码。每一个Test类都是一个TestCase,它里面包含的每一个方法测试的是一个单一的行为。一个TestCase中的所有测试方法,都共享相同的预设条件。这些预设条件是彼此关联的,而不是分别用于不同的测试方法的。如果你发现你的setup()方法里定义的数据有的用在这个测试方法里,有的用在另一个测试方法里,则说明你的这个测试类应该被分成多个。
TestSuite可以包含多个TestCase以及其它的TestCase,可以让我们一次性运行一堆测试。而package是与结构相关的一个组织方式。
这样看来,由TDD驱动出来的代码,一个类可能对应0个或者1个或者多个Test类(即TestCase),而package我们通常在两边保持一致。