浏览 2545 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-03
rspec行为驱动测试对数据fixtures使用了convention over configuration策略,一个文件名对应一个表,方便了数据测试前的导入,但是当测试用例涉及的表数量多、表与表之间关系复杂、级联关系比较深的情况下,会发生某些公用数据在多个测试用例中被多次使用的情况,如果测试用例间存在制约关系,比如某个测试用例A是要考察某记录类型的个数,另一个测试用例B对公用数据的使用(新增或者修改记录属性)过程中改变了A的结果,这会使测试用例A发生失败,如果关联度高和复杂的情况下,这种失败几乎是雪崩式的,会使得问题的纠正变得比较复杂,因此为了避免这种情况的发生,如何对测试数据进行设计其策略变得较为重要,对策就是尽可能的使数据不发生公用,某些数据公用不会造成测试用例间发生干涉,而有些数据会发生干涉,对这些会发生干涉的测试数据应该独立出来,即新建立数据,并且防止这些数据在其他测试用例中被其他开发人员修改(可以在yml文件中进行注释说明)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-03
对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
|
|
返回顶楼 | |
发表时间:2008-07-03
Rspec其实反对Fixture构造测试数据,提倡自己mock数据。
|
|
返回顶楼 | |
发表时间:2008-07-04
chenk85 写道 Rspec其实反对Fixture构造测试数据,提倡自己mock数据。
那么你们是如何做mock的? |
|
返回顶楼 | |
发表时间:2008-07-04
Quake Wang 写道 对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
你如果去做数据统计分析,在关联性紧密情况下就会出现了。这种情况不是transaction而引起的,而是设计测试数据阶段引起的。 |
|
返回顶楼 | |
发表时间:2008-07-04
seemoon 写道 Quake Wang 写道 对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
你如果去做数据统计分析,在关联性紧密情况下就会出现了。这种情况不是transaction而引起的,而是设计测试数据阶段引起的。 这种情况你需要隔离这些test fixture,不要把所有的东西都放到一个文件里面。 举例来说:我们可以在spec/fixtures目录下面下新建立一个report目录,在下面放需要做统计或者大批量数据测试的fixture文件。然后在测试代码里面这样写: describe User do self.fixture_path += "report" fixtures :users end |
|
返回顶楼 | |
发表时间:2008-07-04
测试数据库所有表应该都使用innodb引擎,否则不支持回滚。
|
|
返回顶楼 | |