0

2 つの質問があります。最初は基本的なものです。MiniTest は、UnitTest のドロップイン代替品です。Rails でジェネレーターを使用すると、多数の ActiveSupport::TestCase クラスが得られます。minitest (minitest-spec-rails なし) を使用する場合は、次のことができます。

1.must_equal 1
# instead of 
assert_equal 1, 1

正しい?したがって、railscast #327 (pro episode paywall sry) で説明されているように、MiniTest::Unit::TestCase クラスがある理由がわかりません。私が実際に使用しているテストスイートを見ると混乱します。minitest がドロップインの代替品である場合、minitest を使用して testunit スタイルの Rails テストを実行しています。それを取り出すと、testunit を使用して testunit テストを実行していますか?

では、MiniTest を使用して TestUnit スタイルのテストを実行しているとしましょう。

require 'test_helper'
class FooTest < ActiveSupport::TestCase
end

ドメイン オブジェクトの抽出に関する destroyallsoftware のスクリーンキャストを見た後、私は刺激を受けました。彼は、test_helper.rb のロードを回避して、spork トリックに頼らずにテスト スイートを高速化することについて、いくつかの良い点を指摘しています (これはまさに私が行っていることです)。しかし、test_helper.rb のロードを回避するにはどうすればよいでしょうか?

MiniTest や TestUnit でドメイン オブジェクトを抽出して lib/ または extras/ に配置することはできませんか?

4

1 に答える 1

2

最初の質問に対する答えは「いいえ、正しくありません」です。Minitest は、Test::Unit の「ドロップイン代替品」ではありません。Minitest は、ほとんどの Test::Unit に対してより単純な実装を提供しますが、すべてではありません。Ruby 1.9 では、Test::Unit ライブラリは Minitest の TestCase クラスの上に構築され、2 つのライブラリ間のギャップを埋めます。

Minitest は、テストを書くための 2 つのモードを提供します: 従来の TestCase アプローチと、個別の Spec DSL です。Test::Unit と同様に、Spec DSL は Minitest の TestCase の上に構築されています。したがって、1.9 の Test::Unit と Minitest の Spec DSL はどちらも Minitest の TestCase に基づいて構築されていますが、祖先の一部ではないため、Test::Unit で Spec DSL を使用することはできません。

2 番目の質問に対する答えは、ActiveSupport::TestCase を使用する場合、test_helper.rb を避けることはできないということです。minitest/autorun を要求し、テスト クラスを MiniTest::Unit::TestCase から継承する必要があります。

于 2012-09-14T16:49:49.773 に答える