8

たとえば、これらのテストが実行されるとき、test_fizz常に最初に実行されるようにしたいと考えています。

require 'test/unit'
class FooTest < Test::Unit::TestCase
    def test_fizz
        puts "Running fizz"
        assert true
    end

    def test_bar
        puts "Running bar"
        assert true
    end
end

更新:なぜこれをしたいのですか?私の考えでは、特定のテスト (より単純で基本的な方法をテストするテスト) による初期の失敗により、システムの問題を追跡しやすくなります。たとえば、成功は正しく機能するかどうかbarにかかっています。fizzが壊れている場合fizz、 について心配する必要がないので、すぐにそれを知りたいのですがbar、これも失敗しますが、テスト結果にははるかに複雑な出力が含まれます。

4

3 に答える 3

6

でテスト順序を定義できますTest::Unit::TestCase#test_order = :defined

例:

gem 'test-unit'  #I used 2.5.5
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

結果:

Loaded suite test
Started
:b
.:a
.:c
.

Finished in 0.001 seconds.

test_order = :definedあなたがアルファベット順を取得しなければ:

Loaded suite test
Started
:a
.:b
.:c
.
于 2014-07-01T09:31:04.453 に答える
5

同じテスト クラス内のテストは、定義された順序で呼び出されます。ただし、テスト クラスはクラス名のアルファベット順に実行されます。

本当に細かい制御が必要な場合は、fizz メソッドと bar メソッドをメソッド以外のプレフィックスでメソッドtest_内から定義し、test_fizz_barそれらを順番に呼び出して、fizz の実行が成功したときに条件付きで bar を実行します。

編集: 単体テスト フレームワークによって動作が異なるようです。Eclipse の JUnit の場合、テスト ケースがランダムな順序で実行されるようです: Eclipse の JUnit ビューでのユニット テストの順序付け

于 2009-11-20T20:16:05.637 に答える
3

最初に実行するテストに、並べ替えの少ないアルファベット順の名前を付けます。

def test_AAA_fizz

コードを読みやすくするために、これは見苦しい、または役立つと見なされる可能性があります。

于 2009-11-21T20:40:12.780 に答える