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 # <= test から始まるメソッドがテストとして実行される skip "test this later" end end Unit tests https://github.com/seattlerb/minitest#unit-tests
Strategy def self.included(base) OmniAuth.strategies << base base.extend ClassMethods base.class_eval do option :setup, false option :skip_info, false option :origin_param, 'origin' end end module ClassMethods def default_options -- 略 -- end end end https://github.com/omniauth/omniauth/blob/v1.9.0/lib/omniauth/strategy.rb Module#included の例
Runnable # re-open def self.inherited klass # サブクラスの class をスーパークラスの # クラス変数に追加する self.runnables << klass super end end end https://github.com/seattlerb/minitest/blob/v5.14.0/lib/minitest.rb Class#inherited の Minitest 内での使われ方
は継承したメソッドを含む def self.methods_matching(re) public_instance_methods(true) .grep(re) .map(&:to_s) end -- 略 -- end end Module#public_instance_methods の使われ方 module Minitest class Test < Runnable def self.runnable_methods # test から始まるメソッドを抽出する methods = methods_matching(/^test_/) case self.test_order when :random, :parallel then max = methods.size methods.sort.sort_by { rand(max) } when :alpha, :sorted then methods.sort else raise "Unknown test_order: #{self.test_order.inspect}" end end end end
do # コンソールへの出力と signal ハンドリング time_it do # 実行時間の記録 capture_exceptions do before_setup; setup; after_setup # xUnit の hook 系メソッドを実行する self.send(self.name) # 対象のメソッドを実行する end TEARDOWN_METHODS.each do |hook| # before_teardown, teardown, after_teardown capture_exceptions do self.send(hook) # 上のメソッドを順に実行する end end end end Result.from(self) # per contract end end end
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 # <= test から始まるメソッドがテストとして実行される skip "test this later" end end Unit tests https://github.com/seattlerb/minitest#unit-tests