我是一个相当新手的测试人员,但我一直在努力提高Rails中的TDD。
RSpec运行得很好,但我的测试相当慢。我听说MiniTest的速度要快得多,而且MiniTest/Spec DSL看起来和我习惯使用RSpec的方式非常相似,所以我想我应该试一试。
然而,我在网上找不到任何提供如何设置和运行Minitest的演练。我从测试书中学到了如何测试,但我不知道RSpec::Unit或MiniTest是如何工作的。我在我的gem文件中有gem,我已经写了几个简单的测试,但是我不知道把它们放在哪里或者如何运行它们。我认为这是一件很明显的事情,没有人愿意写下来……
谁能给我解释一下如何设置一些Minitest/spec文件并让它们运行,这样我就可以与Rspec进行性能比较?
编辑
具体地说,这些是我最需要知道的基础:
rspec spec或rspec path/to/file_spec.rb的文件,我遗漏了什么?谢谢!
发布于 2011-12-06 11:59:03
此问题类似于How to run all tests with minitest?
使用Ruby 1.9.3和Rake 0.9.2.2,给定如下的目录布局:
Rakefile
lib/alpha.rb
spec/alpha_spec.rb下面是alpha_spec.rb可能的样子:
require 'minitest/spec'
require 'minitest/autorun' # arranges for minitest to run (in an exit handler, so it runs last)
require 'alpha'
describe 'Alpha' do
it 'greets you by name' do
Alpha.new.greet('Alice').must_equal('hello, Alice')
end
end这是Rakefile
require 'rake'
require 'rake/testtask'
Rake::TestTask.new do |t|
t.pattern = 'spec/**/*_spec.rb'
end你可以运行
rake testruby -Ilib spec/alpha_spec.rb测试:
我不知道在minitest中使用spec_helper.rb是不是很常见。似乎没有一种方便的方法来加载一个。将此代码添加到Rakefile中:
require 'rake'
require 'rake/testtask'
Rake::TestTask.new do |t|
t.pattern = 'spec/**/*_spec.rb'
t.libs.push 'spec'
end那么spec/spec_helper.rb可以包含各种冗余的东西:
require 'minitest/spec'
require 'minitest/autorun'
require 'alpha'spec/alpha_spec.rb将冗余部分替换为:
require 'spec_helper'rake testruby -Ilib -Ispec spec/alpha_spec.rb测试:
发布于 2011-10-07 12:45:17
请注意,watchr或spork不是运行测试所必需的。它们可以方便地进行自动测试。但是,运行一组MiniTest测试的最基本方法是使用ruby本身:
$ ruby myfileoftests.rb发布于 2011-08-29 06:39:51
您使用的是哪个版本的Ruby?
在我的理解中,1.9引入了MiniTest,它用向后兼容的API完全取代了Test::Unit。所以如果你使用的是1.9版本,而你的Rails应用引用了Test::Unit,那么它实际上已经在使用MiniTest了。
看看你的Ruby源代码- 1.9.2的test/unit.rb有以下要求:
require 'minitest/unit'
require 'test/unit/assertions'
require 'test/unit/testcase'而test/unit/assertions包括MiniTest::Assertions。
让你的测试运行得更快是一门完全不同的艺术。看看spork和watchr。前者使您的应用程序保持初始化,重新加载修改过的文件,并在每次运行测试套件之前派生。后者监视存储库中的文件是否有更改,并自动运行与其相关的测试用例。
它们一起为您提供了一个相当糟糕的TDD设置。您为您的新模型编写了一个测试用例,它会自动运行并失败。然后,每当您保存关联的模型时,该测试用例都会很快地重新运行。你几乎可以得到关于你是红色还是绿色的即时反馈。
他们都有点棘手的设置和良好的行为在一起,所以如果你被卡住了,请检查更多的问题。
祝你好运!
https://stackoverflow.com/questions/6715158
复制相似问题