我刚刚看了Railscast分的小测验.
使用RSpec和Minitest测试rails应用程序的优缺点是什么?从RSpec转换到Minitest时,我会丢失哪些功能?
我刚刚看了Railscast分的小测验.
使用RSpec和Minitest测试rails应用程序的优缺点是什么?从RSpec转换到Minitest时,我会丢失哪些功能?
我是RSpec开发人员之一,从来没有使用过minitest,所以在阅读这个答案时要考虑我的偏见.
总的来说,RSpec的力量来自这样一个事实:它将如此多的测试概念具体化为第一类对象.当Test::Unit和Minitest使用简单的方法进行断言时,RSpec使用支持否定、self 描述等的一流匹配器对象.RSpec的例子是支持丰富元数据的一流对象;minitest/spec将it
个块编译成简单的方法,这些方法不支持相同种类的丰富元数据.RSpec支持使用接受参数的一级构造(共享示例组)指定共享行为;w/minitest您可以使用inheritance or a mixin to re-use tests,但它没有同样的一流支持.RSpec有一个显式的格式化程序API(有许多第三方格式化程序使用它);我不知道minitest有相同种类的一流格式化程序API.
作为一个整天不断运行测试和练习TDD的人,我发现RSpec给我的力量非常有用.然而,许多人发现这是过分的,额外的抽象会增加认知成本.
以下是我认为minitest缺乏的一些特定功能:
before(:all)
个钩子(注意,这是RSpec的超级用户特性,应该很少使用;在使用RSpec的多年中,我只在少数情况下使用过它)around(:each)
个钩子使用Minitest的好处:
def test_blah
或it 'blah'
种样式.总的来说,这有点像Sinatra vs.Rails,我认为Minitest和RSpec都是不错的 Select ,这取决于你的需求.
最后一件事:如果你更喜欢Minitest的某些特定方面,但你更喜欢RSpec的其他方面,那么它们可以很容易地混合和匹配.如果你感兴趣的话,我会给你wrote a blog post about this美元.