3

この質問は zu test-unit バージョン 2.5.3 に属します

test-unit バージョン 2.5.4 で解決された問題

多くの匿名の TestCases を使用したテストがあります。test-unit 2.5.0 では動作しましたが、実際のバージョン 2.5.3 ではエラーが発生します。

このテストを実行すると:

gem 'test-unit', ">=2.5.2"
require 'test/unit'
Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end
end

テストが実行されず、エラーが発生undefined method sub' for nil:NilClass (NoMethodError)しますtestrunner.rb:361(実際の test-unit-gem 2.5.3 を使用します)。

TestCase に名前を付けると、問題はなくなります。

gem 'test-unit'
require 'test/unit'
X = Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end
end

私の実際の問題では、多くの TestCases を生成します。だから私は次のような状況があります:

gem 'test-unit'
require 'test/unit'
2.times {
  X = Class.new( Test::Unit::TestCase ) do
    def test_add
      assert_equal( 2, 1+1)
    end
  end
}

これを実行すると、警告already initialized constant Xとエラーが表示されます: comparison of Array with Array failed (ArgumentError)(collector.rb:48:in sort_by')。

私の質問:

  • エラーを回避するにはどうすればよいですか?
  • または: 動的に割り当てられた定数を使用して TestCases を作成するにはどうすればよいですか?
4

1 に答える 1

3

これはtest-unit、クラスに読み取り可能な名前が必要になった最新バージョンの gem の変更によるものと思われます。

このようなものが機能します

gem 'test-unit', ">=2.5.2"
require 'test/unit'

Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end

  def self.to_s
    "GeneratedClass"
  end

  def self.name
    to_s
  end
end
于 2013-01-20T22:31:32.243 に答える