我刚刚开始研究一个项目,该项目具有用Rspec编写的> 20k单元测试(项目本身不是用Ruby编写的;只是测试用例)。随着更多功能的增加,预计目前的测试用例数量将在未来大幅增长。已经发生的事情(在很长一段时间内)是RSpec开始是测试这个项目的一个特别好的解决方案,但随着项目的发展,他们的RSpec测试用例的相当临时的结构已经严重地咬了他们。他们遇到的最大问题之一是测试代码中的分类 - 在测试用例中命名测试用例,夹具,帮助代码等的结构(或缺少)。
你可以想象,使用> 20k单元测试,有很多方法具有非常相似的名称,使用从全局命名空间加载的辅助方法。
要突出显示问题所在的一个区域,此应用程序中有大约10个数据库。检查所有这些数据库的表/列/视图/约束/存储过程/ ...的结构是(非常合理地)在现有RSpec单元测试中涵盖的内容。但是,需要检查的此数据库集合中的DDL实体总数可能大于10000;覆盖整个DB结构检查范围和能够有选择地只测试DB结构的子集需要:
10000个单独的方法(我立刻排除了这个选项!)
据我所知,现在存在的是以上所有内容,并没有很多明显的计划......
您是否有任何我可以看到的提示或参考资料来解决这个问题,并为他们的RSpec测试提供某种可扩展的结构?特别是,非常欢迎有关如何为大型项目构建各种RSpec文件的建议。
答案 0 :(得分:1)
The RSpec Book是RSpec技巧和窍门以及BDD方法的优秀资源(尽管您的重点似乎更多是关于测试)。有几种方法可以简化和干掉规范,使其更易于管理,包括共享示例(第12章)和宏(第17章)。
看起来您的项目仍然是一个真正的挑战。在你提到的方法中,我认为使用带有DB,table和column作为参数的宏是最有希望的。