首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置MiniTest?

如何设置MiniTest?
EN

Stack Overflow用户
提问于 2011-07-16 11:40:28
回答 7查看 12.8K关注 0票数 47

我是一个相当新手的测试人员,但我一直在努力提高Rails中的TDD。

RSpec运行得很好,但我的测试相当慢。我听说MiniTest的速度要快得多,而且MiniTest/Spec DSL看起来和我习惯使用RSpec的方式非常相似,所以我想我应该试一试。

然而,我在网上找不到任何提供如何设置和运行Minitest的演练。我从测试书中学到了如何测试,但我不知道RSpec::Unit或MiniTest是如何工作的。我在我的gem文件中有gem,我已经写了几个简单的测试,但是我不知道把它们放在哪里或者如何运行它们。我认为这是一件很明显的事情,没有人愿意写下来……

谁能给我解释一下如何设置一些Minitest/spec文件并让它们运行,这样我就可以与Rspec进行性能比较?

编辑

具体地说,这些是我最需要知道的基础:

  1. 您是否需要test_helper文件(如spec_helper)?如果需要,您如何创建minitest?似乎没有等同于rspec specrspec path/to/file_spec.rb的文件,我遗漏了什么?

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-06 11:59:03

此问题类似于How to run all tests with minitest?

使用Ruby 1.9.3和Rake 0.9.2.2,给定如下的目录布局:

代码语言:javascript
复制
Rakefile
lib/alpha.rb
spec/alpha_spec.rb

下面是alpha_spec.rb可能的样子:

代码语言:javascript
复制
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

代码语言:javascript
复制
require 'rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
end

你可以运行

  • all测试:rake test
  • one ruby -Ilib spec/alpha_spec.rb

测试:

我不知道在minitest中使用spec_helper.rb是不是很常见。似乎没有一种方便的方法来加载一个。将此代码添加到Rakefile中:

代码语言:javascript
复制
require 'rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
  t.libs.push 'spec'
end

那么spec/spec_helper.rb可以包含各种冗余的东西:

代码语言:javascript
复制
require 'minitest/spec'
require 'minitest/autorun'
require 'alpha'

spec/alpha_spec.rb将冗余部分替换为:

代码语言:javascript
复制
require 'spec_helper'

  • all测试:rake test
  • one ruby -Ilib -Ispec spec/alpha_spec.rb

测试:

票数 40
EN

Stack Overflow用户

发布于 2011-10-07 12:45:17

请注意,watchr或spork不是运行测试所必需的。它们可以方便地进行自动测试。但是,运行一组MiniTest测试的最基本方法是使用ruby本身:

代码语言:javascript
复制
$ ruby myfileoftests.rb
票数 5
EN

Stack Overflow用户

发布于 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有以下要求:

代码语言:javascript
复制
require 'minitest/unit'
require 'test/unit/assertions'
require 'test/unit/testcase'

test/unit/assertions包括MiniTest::Assertions

让你的测试运行得更快是一门完全不同的艺术。看看sporkwatchr。前者使您的应用程序保持初始化,重新加载修改过的文件,并在每次运行测试套件之前派生。后者监视存储库中的文件是否有更改,并自动运行与其相关的测试用例。

它们一起为您提供了一个相当糟糕的TDD设置。您为您的新模型编写了一个测试用例,它会自动运行并失败。然后,每当您保存关联的模型时,该测试用例都会很快地重新运行。你几乎可以得到关于你是红色还是绿色的即时反馈。

他们都有点棘手的设置和良好的行为在一起,所以如果你被卡住了,请检查更多的问题。

祝你好运!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6715158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档