問題タブ [testunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1027 参照

ruby - JRubyとTest::Unitのassert_raise

assert_raiseJava例外を認識させるのに問題があります。

できます

これは問題なく動作しますが、より具体的にしようとすると

エラーが発生します

ただし、begin/rescue/end例外をキャッチするために使用できます。

私が間違っていることはありますか、それともこれはの失敗Test::Unitですか?

0 投票する
2 に答える
593 参照

ruby - Shouldashouldメソッドからアサーションメソッドへのアクセスを取得する

次のようなXPath条件に対するコントローラーの応答をテストするshouldaマクロ/メソッドがあります。

XPathマッチングと組み込みアサーションはうまく機能します。ただし、一致要素を1つだけ存在させたいテストケースが1つあります。これはオプションのブロックの仕事です。XPathの一致を呼び出し元に公開して、追加の/コンテキスト固有のアサーションを実行できるようにします。

残念ながら、実際にブロックを渡すと、次のようになります。

...このエラーが発生します:

NoMethodError:Users :: SessionsControllerTest:Classの未定義のメソッド `assert_equal'

これは(私が理解しているように)Shouldaの動作方法によるものです。「should」呼び出し(ブロックを含む)に渡されるパラメーターは、テストクラスのインスタンスではなく、テストクラスのコンテキストで定義されます。Test :: Unit :: Assertions.assert *はモジュールインスタンスメソッドであるため、便利にアクセスできません。

だから、私の質問は:Test :: Unit :: Assertionsからassert*メソッドにあまり問題なくアクセスするための便利で慣用的な方法はありますか?ソリューションはShouldaで機能する必要がありますが、Shouldaに依存する必要はありません。まっすぐなRubyの方法で十分です。

0 投票する
2 に答える
1031 参照

ruby - Test::Unit::TestCase でティアダウンが実行されることを確認しますか?

私はTest::Unit::TestCaseいくつかの単体テストを書くために使用しています。現在、setupディスク上のいくつかのフィクスチャ ファイルとフォルダを移動および変更する機能があります。(これは現時点では必要悪です。) テストがクラッシュした場合、teardownメソッドは呼び出されず、ファイルとフォルダーが邪魔になります。次にテストを実行すると、このようなフォルダーが既に存在する ( Errno::EEXIST) と表示され、停止して残りのファイルを削除する必要があります。

どうすればensure常にteardown実行されますか? (他の言語ensureと同じ考え方です。)finally

0 投票する
1 に答える
1705 参照

ruby-on-rails - Rails で assert_routing を介してホスト制約のあるルートをテストする

ホストをチェックするために制約を使用しているルートと、本質的に同じであるがホスト制限のないルートがあります (これらは実際には名前空間ですが、物事を簡単にするために、この例で行います):

get "/page_key"これらは、ブラウザ経由でアクセスするときや、ホストを定義して実行するときの統合テストなどで、期待どおりに機能します。

ただし、これらのルートが機能することを確認するテストを作成したいのですが、これまでのところ、次のテスト (現在ActionController::IntegrationTestホストを設定できるようになっている) が制約のないものと一致しているため、あまり運がありません。

Constraint proc で env をダンプしようとすると、得られるのは--- :controller.

assert_routing を取り除き、get :show呼び出しとダンプを実行@controllerすると、正しいコントローラーに解決されます (これらのルートはすべて HTTP 要求を介して正常に機能するため、予想どおり)。

0 投票する
3 に答える
670 参照

ruby-on-rails - レールのテスト速度を上げることはできますか?

私は最近 TDD に移行しましたが、コードベースのサイズと複雑さが増すにつれて、テストを実行するたびに、フレームワークが読み込まれるまでの待ち時間がますます長くなっていることに気づきました。

rspec の spec_server は知っていますが、Test::Unit を shoulda で使用しています。Snailgun ( http://github.com/candlerb/snailgun ) を試してみましたが、速度がほとんど向上していないことに気付きました。spork-testunit ( http://github.com/timcharper/spork-testunit )も試しましたが、既存のテストと完全には互換性がありません。

テストの実行の遅れは明確な問題点であり、TDD (少なくとも Rails では) から遠ざかっています。他のオプションを知っている人はいますか?

0 投票する
2 に答える
1864 参照

ruby - Rubyで抽象単体テストを継承するにはどうすればよいですか?

わずかに異なるセットアップ方法で多くの一般的なテストを共有する必要がある2つの単体テストがあります。私が次のようなものを書くと

その場合、Concrete1はAbstractからテストを継承していないようです。または、少なくとも私はそれらをEclipseで実行させることはできません。Concrete1を含むファイルに対して「すべてのテストケースを実行」を選択すると、Abstractは実行されたくありませんが、実行されます。Concrete1を指定すると、テストはまったく実行されません。Concrete1でtest_1を指定すると、それが見つからないと文句を言います( "uncaught throw:invalid_test(ArgumentError)")。

Rubyは初めてです。ここで何が欠けていますか?

0 投票する
1 に答える
265 参照

ruby - スレッドで例外の単体テストを行う方法

次のようなコードで例外が発生したことを単体テストする必要があります。

これを機能させる方法は?

0 投票する
1 に答える
390 参照

ruby - ruby 1.9.1 の test/unit で使用できるコマンド ライン オプションは何ですか?

Ruby 1.9.1 で Test::Unit 互換レイヤーを使用している場合、どのコマンド ライン オプションを使用できますか?

背景:

ruby 1.8.7 で使用できるが、test-unit gem がない ruby​​ 1.9.1 では使用できないコマンド ライン オプションに関する情報を提供します。Ruby 1.9.1 rdocの Test および Test::Unit を調べても役に立ちません。

Ruby 1.9.2 以降では、--helpオプションの有用な出力が得られます。

0 投票する
2 に答える
9145 参照

ruby-on-rails - Test::Unit で特定のテストをスキップする方法

私のプロジェクトの 1 つで、複数のバックエンド システムと連携する必要があります。それらのいくつかはドキュメントがやや不足しているため、部分的には、すべてが期待どおりに機能することを確認するためだけに、いくつかのテストサーバーとやり取りするテストコードをいくつか持っています. ただし、これらのサーバーへのアクセスは非常に遅いため、テスト スイートを実行するたびにこれらのテストを実行したくありません。

私の質問は、特定のテストをスキップしたい状況にどのように対処するかです。現在、環境変数「BACKEND_TEST」と、スキップしたい各テストに対して変数が設定されているかどうかをチェックする条件ステートメントを使用しています。しかし、各テストの先頭に余分な行を追加せずに、テスト ファイル内のすべてのテストをスキップしたい場合があります。

他の状況で flexmock を使用するため、テスト サーバーと対話する必要があるテストは多くありません。ただし、現実から目を背けることはできません。

この質問のタイトルからわかるように、私は Test::Unit を使用しています。さらに、違いがあれば、そのプロジェクトは Rails プロジェクトです。