From: "古川大輔" Date: 2014-01-24T23:03:29+09:00 Subject: [ruby-list:49739] test-unitで使用するテストケースを動的に生成したい  こんにちは。  似たようなパターンのテストを複数実施するために、define_methodでテストを生成して実行したいと考えているのですが、うまいこといかないのでアドバイスいただけないでしょうか? require "test-unit" class Search1 < Test::Unit::TestCase  class << self    def startup      # _test_で始まるメソッドを元に各ブラウザに対するテストを生成する      STDERR.puts "[called]startup"      instance_methods.grep(/^_test_/).each{|method_name|        ['browser1','browser2'].each{|browser|          test_name = "%s_with_%s"%[method_name.to_s.sub('_',''),browser.to_s]          STDERR.puts "[define]%s"%test_name          define_method(test_name) {            send(method_name,browser)          }        }      }    end  end  def _test_search1(browser)    STDERR.puts "[test]%s with %s"%['search1',browser.to_s]  end  def test_default    STDERR.puts "tests:%s"%self.methods.grep(/^test/).to_s  end end generate_test内で_test_で始まるメソッドを列挙して、テストを動的生成しようとしています。 実際やってみると $ ruby -v ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux] $ ruby pc/search.rb Loaded suite pc/search Started [called]startup [define]test_search1_with_browser1 [define]test_search1_with_browser2 tests:[:test_default, :test_search1_with_browser1, :test_search1_with_browser2] . Finished in 0.003118883 seconds. 1 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 320.63 tests/s, 0.00 assertions/s ということで、テストは生成されているのですけど、実行してもらえないようです。 どこかもうちょっと早いタイミングで生成する必要があるのかと思うのですけど、initializeでもダメだったので、どうしたものかと考えています。 #ちなみに最終的に何をしたいかというと、Selenium::WebDriverを使ってIEやFireFoxなど複数のブラウザオブジェクトを生成し、そのそれぞれに対して同じテストを実施したいと考えています。