我刚刚看了一个Minitest的Railscast。
使用RSpec和Minitest测试rails应用的优缺点是什么?从RSpec转换到Minitest会丢失哪些功能?
发布于 2012-09-19 00:00:25
我是RSpec开发人员之一,从未使用过minitest,所以在阅读此答案时请考虑我的偏见。
总的来说,RSpec的强大之处在于它将如此多的测试概念具体化为一流的对象。Unit和Minitest使用简单的方法进行断言,而RSpec使用支持否定、自描述等功能的一级匹配器对象。RSpec的示例是支持丰富元数据的一级对象;minitest/spec将it块编译成简单的方法,而这些方法不支持相同类型的丰富元数据。minitest支持使用接受参数的第一级结构(共享示例组)指定共享行为;对于RSpec,您可以使用inheritance or a mixin to re-use tests,但它不具有相同的第一级支持。RSpec有一个显式的格式化程序API (有许多第三方格式化程序使用它);我不知道最小的有相同类型的一流格式化程序API。
作为一个每天都在不断运行测试和练习测试驱动开发的人,我发现RSpec给了我很大的帮助。然而,许多人发现它过于夸张了,而且额外的抽象也增加了认知成本。
以下是我认为minitest缺少的RSpec的一些具体功能:
before(:all) hooks (请注意,这是RSpec的一个高级用户功能,应该很少使用;在使用groups使用Minitest的好处:
def test_blah或it 'blah'样式中使用。总体而言,它有点像Sinatra‘s,我认为Minitest和RSpec都是很好的选择,取决于你的需求。
最后一件事:如果你更喜欢Minitest的某些特定方面,但你更喜欢RSpec的其他方面,那么它们很容易混合在一起。I wrote a blog post about this,如果你感兴趣的话。
发布于 2012-09-18 13:07:10
我用shoulda从Test/Unit转换成了spec风格的Minitest,它得到了回报。它消除了样板文件,他们说它还提高了速度。我从来没有真正使用过RSpec。相反,我编写了自己的原始测试和模拟框架(只是为了理解模拟,我在切换到Minitest时放弃了它)。我认为RSpec中的存根/模拟可能更高级,所以如果你已经学过了,就继续使用它。否则,坚持使用Minitest,这将使您能够与不了解RSpec的人协作,比如我。
https://stackoverflow.com/questions/12470601
复制相似问题