minitest/{test,spec,mock,benchmark}¶ ↑
- 主页
- 错误
- rdoc
- clog
- vim
- emacs
描述:¶ ↑
minitest 提供了一整套测试工具,支持 TDD、BDD、模拟和基准测试。
"I had a class with Jim Weirich on testing last week and we were allowed to choose our testing frameworks. Kirk Haines and I were paired up and we cracked open the code for a few test frameworks... I MUST say that minitest is *very* readable / understandable compared to the 'other two' options we looked at. Nicely done and thank you for helping us keep our mental sanity." -- Wayne E. Seguin
minitest/test 是一个小型且速度极快的单元测试框架。它提供了丰富的断言集,使您的测试干净且可读。
minitest/spec 是一个功能完整的规范引擎。它挂钩到 minitest/test 并无缝地将测试断言桥接到规范期望。
minitest/benchmark 是一种以可重复的方式断言算法性能的绝佳方法。现在您可以断言您的新手同事不会用指数算法替换您的线性算法!
minitest/mock 由 Steven Baker 开发,是一个非常小的模拟(和桩)对象框架。
minitest/pride 展示了对测试的自豪感,并为您的测试输出添加了颜色。我想这也是一个如何编写 IO 管道的示例。:P
minitest/test 旨在为需要一组最少的方法来引导工作测试套件的语言实现者提供一个干净的实现。例如,测试用例发现没有涉及任何魔法。
"Again, I can't praise enough the idea of a testing/specing framework that I can actually read in full in one sitting!" -- Piotr Szotkowski
与 rspec 比较
rspec is a testing DSL. minitest is ruby. -- Adam Hawkins, "Bow Before MiniTest"
minitest 不会重新发明 ruby 已经提供的任何东西,例如:类、模块、继承、方法。这意味着您只需学习 ruby 即可使用 minitest,并且您所有的常规 OO 实践(如提取方法重构)仍然适用。
特性/问题:¶ ↑
-
minitest/autorun - 运行所有测试的简单而显式的方法。
-
minitest/test - 一个非常快速、简单和干净的测试系统。
-
minitest/spec - 一个非常快速、简单和干净的规范系统。
-
minitest/mock - 一个简单而干净的模拟/桩系统。
-
minitest/benchmark - 一种断言算法性能的绝佳方法。
-
minitest/pride - 展示您对测试的自豪感!
-
minitest/test_task - 一个功能齐全且干净的 rake 任务生成器。
-
运行器非常小且速度快,但没有花里胡哨的功能。
-
由软弱的人类编写。软件永远不会完美。我们最终都会死去。
原理:¶ ↑
请参阅 design_rationale.rb,了解规范和测试在 minitest 中是如何工作的。
概要:¶ ↑
假设您要测试以下类
class Meme def i_can_has_cheezburger? "OHAI!" end def will_it_blend? "YES!" end end
单元测试¶ ↑
将您的测试定义为以 test_
开头的方法。
require "minitest/autorun" class TestMeme < Minitest::Test def setup @meme = Meme.new end def test_that_kitty_can_eat assert_equal "OHAI!", @meme.i_can_has_cheezburger? end def test_that_it_will_not_blend refute_match /^no/i, @meme.will_it_blend? end def test_that_will_be_skipped skip "test this later" end end
规范¶ ↑
require "minitest/autorun" describe Meme do before do @meme = Meme.new end describe "when asked about cheeseburgers" do it "must respond positively" do _(@meme.i_can_has_cheezburger?).must_equal "OHAI!" end end describe "when asked about blending possibilities" do it "won't say no" do _(@meme.will_it_blend?).wont_match /^no/i end end end
有关匹配器支持,请查看
基准测试¶ ↑
将基准测试添加到您的测试中。
# optionally run benchmarks, good for CI-only work! require "minitest/benchmark" if ENV["BENCH"] class TestMeme < Minitest::Benchmark # Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000] def bench_my_algorithm assert_performance_linear 0.9999 do |n| # n is a range value @obj.my_algorithm(n) end end end
或者将它们添加到您的规范中。如果您使基准测试成为可选的,则需要将基准测试包装在条件中,因为这些方法不会被定义。在 minitest 5 中,描述名称需要与 /Bench(mark)?$/
匹配。
describe "Meme Benchmark" do if ENV["BENCH"] then bench_performance_linear "my_algorithm", 0.9999 do |n| 100.times do @obj.my_algorithm(n) end end end end
输出类似于
# Running benchmarks: TestBlah 100 1000 10000 bench_my_algorithm 0.006167 0.079279 0.786993 bench_other_algorithm 0.061679 0.792797 7.869932
输出是制表符分隔的,以便于粘贴到电子表格中。
模拟¶ ↑
使用 Fowler & Meszaros 在 www.martinfowler.com/bliki/TestDouble.html 处的术语定义的模拟和桩。
“模拟会预先编程期望,这些期望构成了它们预期接收的调用的规范。如果它们收到它们不期望的调用,它们可以抛出异常,并且在验证期间会进行检查以确保它们得到了它们期望的所有调用。”
class MemeAsker def initialize(meme) @meme = meme end def ask(question) method = question.tr(" ", "_") + "?" @meme.__send__(method) end end require "minitest/autorun" describe MemeAsker, :ask do describe "when passed an unpunctuated question" do it "should invoke the appropriate predicate method on the meme" do @meme = Minitest::Mock.new @meme_asker = MemeAsker.new @meme @meme.expect :will_it_blend?, :return_value @meme_asker.ask "will it blend" @meme.verify end end end
多线程和模拟¶ ↑
Minitest
模拟不支持多线程。如果它可以工作,那就很好,如果它不能工作,您可以使用常规的 ruby 模式和工具(如局部变量)。以下是一个断言线程内代码运行的示例
def test_called_inside_thread called = false pr = Proc.new { called = true } thread = Thread.new(&pr) thread.join assert called, "proc not called" end
桩¶ ↑
使用 Fowler & Meszaros 在 www.martinfowler.com/bliki/TestDouble.html 处的术语定义的模拟和桩。
“桩为测试期间的调用提供罐头答案”。
Minitest 的 stub 方法会在块的持续时间内覆盖单个方法。
def test_stale_eh obj_under_test = Something.new refute obj_under_test.stale? Time.stub :now, Time.at(0) do # stub goes away once the block is done assert obj_under_test.stale? end end
关于桩的一个注意事项:为了桩一个方法,该方法必须在桩之前实际存在。使用单例方法创建一个新的不存在的方法
def obj_under_test.fake_method ... end
运行您的测试¶ ↑
理想情况下,您将使用 rake 任务来运行您的测试(请参见下文),无论是零碎地运行还是一次性运行。但是!您不必这样做
% ruby -Ilib:test test/minitest/test_minitest_test.rb Run options: --seed 37685 # Running: ...................................................................... (etc) Finished in 0.107130s, 1446.8403 runs/s, 2959.0217 assertions/s. 155 runs, 317 assertions, 0 failures, 0 errors, 0 skips
有运行时选项可用,既来自 minitest 本身,也通过插件提供。要查看它们,只需使用 --help
运行即可
% ruby -Ilib:test test/minitest/test_minitest_test.rb --help minitest options: -h, --help Display this help. -s, --seed SEED Sets random seed. Also via env. Eg: SEED=n rake -v, --verbose Verbose. Show progress processing files. -n, --name PATTERN Filter run on /regexp/ or string. -e, --exclude PATTERN Exclude /regexp/ or string from run. Known extensions: pride, autotest -p, --pride Pride. Show your testing pride! -a, --autotest Connect to autotest server.
Rake 任务¶ ↑
您可以通过将此添加到您的 Rakefile 来设置一个 rake 任务来运行您的所有测试
require "minitest/test_task" Minitest::TestTask.create # named test, sensible defaults # or more explicitly: Minitest::TestTask.create(:test) do |t| t.libs << "test" t.libs << "lib" t.warning = false t.test_globs = ["test/**/*_test.rb"] end task :default => :test
每个都将生成 4 个任务
rake test :: Run the test suite. rake test:cmd :: Print out the test command. rake test:isolated :: Show which test files fail when run separately. rake test:slow :: Show bottom 25 tests sorted by time.
Rake 任务变量¶ ↑
您可以向 rake 提供许多变量来修改运行。
MT_LIB_EXTRAS :: Extra libs to dynamically override/inject for custom runs. N :: -n: Tests to run (string or /regexp/). X :: -x: Tests to exclude (string or /regexp/). A :: Any extra arguments. Honors shell quoting. MT_CPU :: How many threads to use for parallel test runs SEED :: -s --seed Sets random seed. TESTOPTS :: Deprecated, same as A FILTER :: Deprecated, same as A
编写扩展¶ ↑
要定义插件,请将名为 minitest/XXX_plugin.rb 的文件添加到您的项目/gem 中。该文件必须可以通过 ruby 的 LOAD_PATH(通过 rubygems 或其他方式)发现。Minitest
将使用 Gem.find_files 查找并要求该文件。然后,它将在启动期间尝试调用 plugin_XXX_init
。选项处理器还将尝试调用 plugin_XXX_options
,传递 OptionParser 实例和当前选项哈希。这使您可以注册自己的命令行选项。这是一个完全虚假的示例
# minitest/bogus_plugin.rb: module Minitest def self.plugin_bogus_options(opts, options) opts.on "--myci", "Report results to my CI" do options[:myci] = true options[:myci_addr] = get_myci_addr options[:myci_port] = get_myci_port end end def self.plugin_bogus_init(options) self.reporter << MyCI.new(options) if options[:myci] end end
添加自定义报告器¶ ↑
Minitest
使用复合报告器来使用多个报告器实例输出测试结果。您可以在 init_plugins 阶段将新报告器添加到复合报告器中。正如我们在上面的 plugin_bogus_init
中看到的那样,您只需通过 <<
将您的报告器实例添加到复合报告器即可。
AbstractReporter
定义了报告器的 API。您可以对其进行子类化并覆盖您想要实现所需行为的任何方法。
- start
-
在运行开始时调用。
- record
-
为每个结果(通过或其他方式)调用。
- report
-
在运行结束时调用。
- passed?
-
调用以查看您是否检测到任何问题。
使用我们上面的示例,这是我们如何实现 MyCI
# minitest/bogus_plugin.rb module Minitest class MyCI < AbstractReporter attr_accessor :results, :addr, :port def initialize options self.results = [] self.addr = options[:myci_addr] self.port = options[:myci_port] end def record result self.results << result end def report CI.connect(addr, port).send_results self.results end end # code from above... end
常见问题¶ ↑
哪些版本彼此兼容?或者支持哪些版本?¶ ↑
Minitest
是 rails 的依赖项,直到最近才有一个过分热衷于向后兼容的策略。因此,我不得不支持已经过时的 ruby 版本。希望在不久的将来我只能支持当前版本的 ruby。
(截至 2024-05-10)
当前版本的 rails:(endoflife.date/rails)
| rails | min ruby | minitest | status | EOL Date | |-------+----------+----------+----------+------------| | 7.1 | >= 2.7 | >= 5.1 | Current | 2026-06-01?| | 7.0 | >= 2.7 | >= 5.1 | Maint | 2025-06-01?| | 6.1 | >= 2.5 | >= 5.1 | Security | 2024-06-01?| | 6.0 | >= 2.5 | >= 5.1 | EOL | 2023-06-01 | | 5.2 | >= 2.2.2 | ~> 5.1 | EOL | 2022-06-01 |
如果要查看特定版本的要求,请运行
gem spec -r --ruby rails -v 7.0.0
当前版本的 ruby:(endoflife.date/ruby)
| ruby | Status | EOL Date | |------+---------+------------| | 3.3 | Current | 2027-03-31 | | 3.2 | Maint | 2026-03-31 | | 3.1 | Security| 2025-03-31 | | 3.0 | EOL | 2024-03-31 | | 2.7 | EOL | 2023-03-31 | | 2.6 | EOL | 2022-03-31 | | 2.5 | EOL | 2021-03-31 | DO YOU SEE WHAT I'M STUCK WITH???
如何测试 SimpleDelegates?¶ ↑
以下实现和测试
class Worker < SimpleDelegator def work end end describe Worker do before do @worker = Worker.new(Object.new) end it "must respond to work" do _(@worker).must_respond_to :work end end
输出失败
1) Failure: Worker#test_0001_must respond to work [bug11.rb:16]: Expected #<Object:0x007f9e7184f0a0> (Object) to respond to #work.
Worker 是一个 SimpleDelegate,在 1.9+ 中是 BasicObject 的子类。期望放在 Object
(下一级)上,因此 Worker (SimpleDelegate) 命中 method_missing
并向下委托给 Object.new
实例。该对象不响应 work,因此测试失败。
您可以通过使用 Minitest::Expectations
扩展 worker 来绕过 SimpleDelegate#method_missing
。您可以像这样在实例级别的 setup 中执行此操作
before do @worker = Worker.new(Object.new) @worker.extend Minitest::Expectations end
或者,您可以像这样扩展 Worker 类(在测试文件中!),例如
class Worker include ::Minitest::Expectations end
如何在测试类之间共享代码?¶ ↑
使用模块。这正是它们的目的
module UsefulStuff def useful_method # ... end end describe Blah do include UsefulStuff def test_whatever # useful_method available here end end
请记住,describe
只是创建测试类。归根结底,它只是 ruby,并且所有您正常的 Good Ruby Rules (tm) 都适用。如果您想使用模块通过 setup/teardown 扩展您的测试,请确保您始终调用 super。 before/after 会自动为您调用 super,因此请确保您不会调用两次。
如何在测试组之前运行代码?¶ ↑
像这样使用带有 begin…end 的常量
describe Blah do SETUP = begin # ... this runs once when describe Blah starts end # ... end
这对于昂贵的初始化或共享状态很有用。请记住,这只是 ruby 代码,因此您需要确保此技术和共享状态不会干扰您的测试。
为什么我看到 uninitialized constant MiniTest::Test (NameError)
?¶ ↑
您是否正在使用 Bundler(例如通过 bundle exec
)运行测试?如果是这样,为了要求 minitest,您必须首先将 gem 'minitest'
添加到您的 Gemfile 并运行 bundle
。安装完成后,您应该能够要求 minitest 并运行您的测试。
使用 Minitest 的知名项目:¶ ↑
-
arel
-
journey
-
mime-types
-
nokogiri
-
rails (active_support 等)
-
rake
-
rdoc
-
…当然,还有来自 seattle.rb 的所有内容…
开发 Minitest:¶ ↑
Minitest 自身的测试需要 UTF-8 外部编码。¶ ↑
这是 Windows 中常见的问题,其默认外部编码通常是 CP850,但它会影响任何平台。Minitest
可以使用任何编码运行测试套件,但是要运行 Minitest 自身的测试,你必须拥有 UTF-8 的默认外部编码。
如果你的编码错误,你将会看到如下错误:
--- expected +++ actual @@ -1,2 +1,3 @@ # encoding: UTF-8 -"Expected /\\w+/ to not match \"blah blah blah\"." +"Expected /\\w+/ to not match # encoding: UTF-8 +\"blah blah blah\"."
要检查你当前的编码,请运行:
ruby -e 'puts Encoding.default_external'
如果你的输出不是 UTF-8,你可以将 RUBYOPTS 环境变量设置为 '-Eutf-8'。类似这样:
RUBYOPT='-Eutf-8' ruby -e 'puts Encoding.default_external'
请查阅你的操作系统/shell 文档以获取精确的语法(上述方法在基本的 Windows CMD 提示符下无效,请查找 SET 命令)。一旦你成功输出了 UTF-8,在 Minitest
中运行 rake 时使用相同的设置。
Minitest 自身的测试需要 GNU(或类似的)diff。¶ ↑
这也是一个主要影响 Windows 开发人员的问题。PowerShell 有一个名为 diff 的命令,但是它不适合与 Minitest
一起使用。
如果你看到如下的任何一个错误,你可能缺少 diff 工具:
4) Failure: TestMinitestUnitTestCase#test_assert_equal_different_long [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:936]: Expected: "--- expected\n+++ actual\n@@ -1 +1 @@\n-\"hahahahahahahahahahahahahahahahahahahaha\"\n+\"blahblahblahblahblahblahblahblahblahblah\"\n" Actual: "Expected: \"hahahahahahahahahahahahahahahahahahahaha\"\n Actual: \"blahblahblahblahblahblahblahblahblahblah\"" 5) Failure: TestMinitestUnitTestCase#test_assert_equal_different_collection_hash_hex_invisible [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:845]: Expected: "No visible difference in the Hash#inspect output.\nYou should look at the implementation of #== on Hash or its members.\n {1=>#<Object:0xXXXXXX>}" Actual: "Expected: {1=>#<Object:0x00000003ba0470>}\n Actual: {1=>#<Object:0x00000003ba0448>}"
如果你使用 Cygwin 或 MSYS2 或类似的工具,其中包含适用于 Windows 的 GNU diff 包。如果你没有,你可以从 gnuwin32.sourceforge.net/packages/diffutils.htm 下载 GNU diffutils(确保将其添加到你的 PATH 中)。
你可以通过以下命令确保它已安装并且路径配置正确:
diff.exe -v
有多个输出行,第一行应该是类似这样的:
diff (GNU diffutils) 2.8.1
如果你正在使用 PowerShell,请确保你运行的是 diff.exe,而不是仅仅运行 diff,这将调用 PowerShell 内置的函数。
已知扩展:¶ ↑
- capybara_minitest_spec
-
Capybara RSpec 匹配器和
Minitest::Spec
期望之间的桥梁(例如,page.must_have_content("Title")
)。 - color_pound_spec_reporter
- minispec-metadata
-
用于 describe/it 代码块和 CLI 标签过滤的元数据。例如,
it "requires JS driver", js: true do
和ruby test.rb --tag js
运行标记为 :js 的测试。 - minispec-rails
-
在 Rails 5+ 中使用 Spec 风格的最低支持。
- mini-apivore
-
用于基于 swagger 的自动化 API 测试。
- minitest-around
-
用于 minitest 的 Around 代码块。替代 setup/teardown 模式。
- minitest-assert_errors
- minitest-autotest
-
autotest 是一种持续测试工具,旨在在开发过程中使用。
- minitest-bacon
-
minitest-bacon 使用类似 bacon 的功能扩展了 minitest。
- minitest-bang
-
添加对 RSpec 风格的 let! 的支持,以便在每次测试之前立即调用 let 语句。
- minitest-bisect
-
帮助你隔离和调试随机测试失败。
- minitest-blink1_reporter
-
使用 Blink1 显示测试结果。
- minitest-capistrano
-
用于测试 Capistrano 配方的断言和期望。
- minitest-capybara
-
对 minitest 单元和 spec 的 Capybara 匹配器支持。
- minitest-cc
-
它提供有关代码覆盖率的最低信息。
- minitest-chef-handler
-
将
Minitest
套件作为 Chef 报告处理程序运行 - minitest-ci
-
用于
Minitest
的 CI 报告器插件。 - minitest-context
-
为
Minitest
spec 中共享通用期望的代码重用定义上下文。 - minitest-debugger
-
包装 assert,以便失败的断言会进入 ruby 调试器。
- minitest-display
-
修补
Minitest
,以允许轻松配置的输出。 - minitest-documentation
-
受 rspec 启发的最小文档格式。
- minitest-doc_reporter
-
受 rspec 文档格式启发的详细输出。
- minitest-emoji
-
为你的测试通过、失败和跳过打印 emoji。
- minitest-english
-
断言和期望的语义对称别名。
- minitest-excludes
-
用于排除在特定条件下你不想运行的某些测试的干净 API。
- minitest-fail-fast
-
重新实现了 RSpec 的“快速失败”功能
- minitest-filecontent
-
支持文件中有预期结果的单元测试。不同的结果将再次存储在文件中。
- minitest-filesystem
-
添加断言和期望以帮助测试文件系统内容。
- minitest-firemock
-
使你的
Minitest
模拟更具弹性。 - minitest-focus
-
一次专注于一个测试。
- minitest-gcstats
-
一个 minitest 插件,它添加一个报告,其中包含按分配的对象数量排序的顶级测试。
- minitest-global_expectations
-
支持所有对象的 minitest 期望方法
- minitest-great_expectations
-
对 minitest 的断言和期望的通用有用的补充。
- minitest-growl
-
通过 growl 进行 minitest 的测试通知器。
- minitest-happy
-
全局激活 MINITEST PRIDE! RAWR!
- minitest-have_tag
-
添加
Minitest
断言,以测试提供的字符串中是否存在 HTML 标签,包括内容。 - minitest-heat
-
生成失败位置热图的报告
- minitest-hooks
-
Around 和 before_all/after_all/around_all 钩子
- minitest-hyper
-
为你的
Minitest
运行提供漂亮的单页 HTML 报告 - minitest-implicit-subject
-
测试主题的隐式声明。
- minitest-instrument
-
在执行测试方法时检测 ActiveSupport::Notifications。
- minitest-instrument-db
-
将 minitest-instrument 提供的测试执行速度信息存储在数据库中。
- minitest-junit
-
用于 minitest 的 JUnit 风格 XML 报告器。
- minitest-keyword
-
使用带关键字参数的
Minitest
断言。 - minitest-libnotify
-
通过 libnotify 进行 minitest 的测试通知器。
- minitest-line
-
在行号处运行测试。
- minitest-logger
-
定义 assert_log 并使 minitest 能够测试日志消息。支持 Logger 和 Log4r::Logger。
- minitest-macruby
-
为 macruby UI 测试提供 minitest 扩展。
- minitest-matchers
-
为 minitest 添加对 RSpec 风格匹配器的支持。
- minitest-matchers_vaccine
-
添加符合匹配器规范的断言,但没有任何期望感染。
- minitest-metadata
-
使用元数据(键值)注释测试。
- minitest-mock_expectations
-
为 minitest 提供方法调用断言。
- minitest-mongoid
-
用于
Minitest
的 Mongoid 断言匹配器。 - minitest-must_not
-
在
Minitest
中提供 must_not 作为 wont 的别名。 - minitest-optional_retry
-
自动重试失败的测试以帮助解决不稳定性。
- minitest-osx
-
适用于 Mac OS X 通知中心的报告器。
- minitest-parallel_fork
-
基于 fork 的并行化
- minitest-parallel-db
-
使用单个数据库并行运行测试。
- minitest-power_assert
-
用于
Minitest
的 PowerAssert。 - minitest-predicates
-
为 .predicate? 方法添加支持。
- minitest-profile
-
列出套件中最慢的 10 个测试。
- minitest-rails
-
用于 Rails 3.x 的
Minitest
集成。 - minitest-rails-capybara
-
用于 Minitest::Rails 的 Capybara 集成。
- minitest-reporters
-
创建可自定义的
Minitest
输出格式。 - minitest-rg
-
用于
Minitest
的彩色红色/绿色输出。 - minitest-rspec_mocks
-
将 RSpec Mocks 与
Minitest
一起使用。 - minitest-server
-
minitest-server 使用你的 minitest 进程提供客户端/服务器设置,允许你的测试运行将其结果直接发送到处理程序。
- minitest-sequel
-
用于加速 Ruby Sequel 数据库设置的开发和测试的
Minitest
断言。 - minitest-shared_description
-
支持共享的 spec 和共享的 spec 子类
- minitest-should_syntax
-
用于
Minitest
的 RSpec 风格的x.should == y
断言。 - minitest-shouldify
-
向
Minitest
添加各种 should (坏主意) - minitest-snail
-
打印出耗时太长的测试列表
- minitest-spec-context
-
为
Minitest::Spec
提供 rspec 式的 context 方法。 - minitest-spec-expect
-
用于
Minitest::Spec
的 Expect 语法(例如,expect(sequences).to_include :celery_man)。 - minitest-spec-magic
-
用于 Rails 及其他用途的
Minitest::Spec
扩展。 - minitest-spec-rails
-
为 ActiveSupport::TestCase 插入
Minitest::Spec
超类。 - minitest-sprint
-
运行你的测试(明白了吗?它很快!),并使重新运行单个失败的测试更容易。
- minitest-stately
-
查找测试之间泄漏的状态
- minitest-stub_any_instance
-
在代码块的持续时间内,为给定类的任何实例存根方法。
- minitest-stub-const
-
在代码块的持续时间内存根常量。
- minitest-tags
-
为 minitest 添加标签。
- minitest-unordered
-
向 minitest 添加一个新的断言,用于检查集合的内容,忽略元素顺序。
- minitest-vcr
-
使用
Minitest::Spec
和 VCR 的自动磁带管理。 - minitest_log
-
添加结构化日志记录、数据解释和判断。
- minitest_owrapper
-
获取作为 TestResult 对象的测试结果。
- minitest_should
-
用于 minitest test::unit 的 Shoulda 风格语法。
- minitest_tu_shim
-
在 test/unit 和 minitest 之间架起桥梁。
- mongoid-minitest
-
用于 Mongoid 的
Minitest
匹配器。 - mutant-minitest
-
用于 mutant 的
Minitest
集成。 - pry-rescue
-
一个带有 minitest 支持的 pry 插件。请参阅 pry-rescue/minitest.rb。
- rematch
-
从大型硬编码数据中整理你的测试文件,并在代码更改时自动更新它们。
- rspec2minitest
-
轻松将任何 RSpec 匹配器转换为
Minitest
断言和期望。 - stubberry
-
多个存根“浆果”、甜蜜且有用的存根助手和断言。(stub_must、assert_method_called、通过 id 存根 ORM 对象)
未知扩展:¶ ↑
作者们... 请发送一个包含您的 minitest 扩展描述的 pull request。
-
assay-minitest
-
detroit-minitest
-
em-minitest-spec
-
flexmock-minitest
-
guard-minitest
-
guard-minitest-decisiv
-
minitest-activemodel
-
minitest-ar-assertions
-
minitest-capybara-unit
-
minitest-colorer
-
minitest-deluxe
-
minitest-extra-assertions
-
minitest-rails-shoulda
-
minitest-spec
-
minitest-spec-should
-
minitest-sugar
-
spork-minitest
Minitest
相关资源¶ ↑
-
minitest/pride 布料:www.spoonflower.com/fabric/3928730-again-by-katie_allen
要求:¶ ↑
-
Ruby 2.3+。没有魔法,我希望。
安装:¶ ↑
sudo gem install minitest
在 1.9 版本中,您已经拥有它了。要获取更新的版本,您仍然可以安装 gem,然后 require “minitest/autorun” 应该会自动将其拉入。如果没有,您需要自己进行操作。
gem "minitest" # ensures you"re using the gem, and not the built-in MT require "minitest/autorun" # ... usual testing stuffs ...
请注意:Ruby 1.9/2.0 打包自己的 gem 的方式存在一个严重问题。它们会安装一个 gem 规范文件,但不会将 gem 内容安装到 gem 路径中。这会搞乱 Gem.find_files 和许多其他东西(gem which,gem contents 等)。
直接安装 minitest 作为 gem,您会更快乐。
许可证:¶ ↑
(MIT 许可证)
版权所有 © Ryan Davis, seattle.rb
特此授予任何人免费获取本软件及相关文档文件(“软件”)副本的许可,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件副本的权利,并允许向被提供本软件的人员授予此等权利,但须遵守以下条件
以上版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于对适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担责任,无论是在合同诉讼、侵权行为还是其他方面,因软件或软件的使用或其他交易而产生或与之相关的责任。