4

Rubyでは、Test :: Unitテストが実行される順序をどのように制御するのかという質問がありますか?を参照して答えたかったtest_order = :defined

ドキュメントは次のようにTest::Unit::TestCase.test_order述べています。

現在のテスト順序を設定します。

利用可能な注文は次のとおりです。

  • :アルファベットのデフォルト。テストはアルファベット順にソートされます。
  • :randomテストはランダムな順序で並べ替えられます。
  • :definedテストは定義された順序でソートされます。

だから私はこれがメソッド定義の順序でテストを実行すると思いました:

gem 'test-unit'
require 'test/unit'
class Mytest < Test::Unit::TestCase
  test_order = :defined
  #~ test_order = :random
  #~ test_order = :alphabetic #default
  def test_b
    p :b
  end
  def test_a
    p :a
  end
  def test_c
    p :c
  end
end

しかし、それを実行すると(テストユニット2.4.9および2.5でテスト)、アルファベット順になります。

Started
:a
.:b
.:c
.

どうしたの?コードに何か足りないものがありますか、ドキュメントが間違っていますか、それともバグがありますか?

4

1 に答える 1

3

私は解決策を検出しました、またはより良い私の欠点:

gem 'test-unit'
require 'test/unit'
class Mytest < Test::Unit::TestCase
  self.test_order = :defined
  #~ self.test_order = :random
  #~ self.test_order = :alphabetic #default
  def test_b
    p :b
  end
  def test_a
    p :a
  end
  def test_c
    p :c
  end
end

違い:test_order = :definedクラスで使用しました。何が起こったのか:ローカル変数test_orderが作成されました。

self.test_order = :definedメソッドを使用してがtest_order=呼び出されます。

于 2012-12-12T21:13:39.603 に答える