2013-07-24 5 views
10

Rails 3.2からRails 4へのアップグレード後、私のアプリは動作しますが、test-unitで書かれたテストは災害です。レール4にテストユニットを使用することはできますか?

Minitestは、テストユニットと「互換性がある」と噂されています。しかし、(今はバンドルされている)Minitestを使用しようとすると、assert *のステートメント名やパラメータから、(明らかに)他の多くのものが大きくて微妙なものまで、大きな違いがあります。

私が代わりに

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase' 

、Minitestを避け、私のGemfileに私のテスト単位の宝石を維持しようとすると、すくいテスト爆発、と言っしようとするとこれは

require 'rails/test_help' 

呼ばれたから得られます: (

私はしばらく検索してきましたが、まだテストユニットを使用する方法を考え出していませんでした。唯一の選択肢は、私たちの大規模なリファクタリングです私たちのテストの80%は、Minitestのテストユニットとの非互換性によって何らかの形で破損しているからです。

まだ読んでいます。すなわち、http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0私は実質的にこのことについて言及していません。

Minitestを体系的にテストユニットとより互換性を持たせることはできますか?あるいは、Rails 4でテストユニットを使用し続けるのですか?

+0

あなたはどのような非互換性に遭遇したのかを具体的に記述できますか? – blowmage

+0

assert_include対assert_includes、assert_not_includeとassert_not_includes、assert_falseと反論、assert_trueとassertを比較します。 process_with_new_base_testメソッドがありません(コントローラー・テストでの要求間でコントローラー・インスタンス変数のスミアを防ぐために、これをラップする必要があります)。テストの束はまだ壊れて、私はこの時点であきらめました。 –

+0

これについてリモートペアリングすることはできますか?私にメールを送りなさい、それをセットアップする。 – blowmage

答えて

3

サブクラス化していますか?Test :: Unit :: TestCaseではなくActiveSupport :: TestCase?

たぶん、あなたのテストグループにminitest_tu_shimを追加してみてください:

https://github.com/seattlerb/minitest_tu_shim

またはactivesupportのをサブクラス化することを確認してください:: TestCaseの

0

はいRailsのサポートテスト::ユニット。ここにそれのためのガイドがあります。

http://guides.rubyonrails.org/testing.html

メソッド名を変更するには、あなたのテストケースに代わるグローバル検索&を使用してください。ここで

は、統合テストである:ここで

class UserFlowsTest < ActionDispatch::IntegrationTest 

は、コントローラのテストです:

class UsersControllerTest < ActionController::TestCase 

自動的に生成されたヘルパーやフレームワークファイルをコピーして、例を参照してくださいrails new appを試してみてください。

関連する問題