Javaでは、通常、同一のパッケージ階層を持つ2つのソースフォルダsrc
とtest
を作成します。Rubyテストフォルダ構造を整理するベストプラクティスは何ですか?
Rubyでは、すべてのテストをテストするクラスと同じフォルダに配置するだけですか?または、別のフォルダに同様の階層を作成しますか?もしそうなら、ユニットテストではどのようにrequire
パスを管理しますか?
Javaでは、通常、同一のパッケージ階層を持つ2つのソースフォルダsrc
とtest
を作成します。Rubyテストフォルダ構造を整理するベストプラクティスは何ですか?
Rubyでは、すべてのテストをテストするクラスと同じフォルダに配置するだけですか?または、別のフォルダに同様の階層を作成しますか?もしそうなら、ユニットテストではどのようにrequire
パスを管理しますか?
最初に、各宝石は典型的なレイアウトを持っています。コードはほぼ完全にlib
です。ルートディレクトリには、READMEのようなメタデータと、gemspec
ファイルと、オプションの設定データがあります。 RailsやSinatraなどのWebアプリケーションを作成する場合は、代わりにそのレイアウト標準が使用されます
すべてのプロジェクトタイプで、同様の場所にテストが見つかります。使用するテストフレームワークに応じて、異なる標準があります。
Test::Unitを使用する場合、テストはtest
ディレクトリにあります。実際にそのディレクトリにテストファイルを編成する方法に関する実際の標準はありません。私は個人的にテストされたコードのファイルレイアウトを少なくとも部分的に反映することが有用であることを発見しました。モジュール/名前空間を十分に使用すると、読みやすくなります。
RSpecを使用する場合、テスト(スペックと呼ばれる)はspec
ディレクトリに移動します。実際のテストのレイアウトに関する上記の注意事項もここに当てはまります。
結局のところ、テストを設定する方法は開発者の決定がほとんどです。テストは誰もが異なる意見を持つエリアなので、成功への道はありません。あなたは、あなたが使う宝石のいくつかを見て、彼らがどのように物事をするかを見てください。 Test :: Unitレイアウトの例は、Railsのgemsにあります。 ActiveRecordの場合RSpecテストの例は、ChiliProject用のchiliproject_backlogsプラグインです。
徹底的な答えをありがとう! rspecプロジェクトの依存関係を含む 'spec_helper'があることがよくあります。 –
宝石には '\ lib'と' \ test'ディレクトリがあります。 – ashes999
私はRubyも新しく、同じ質問に疑問を抱いています。私が得られなかった部分は、libディレクトリのコンポーネントの潜在的な階層構造にマッチさせるためにそれらを階層的に編成する方法でした。
私はそれほど長い間、グーグルではありませんでしたが、私の発見はすでに予想以上に薄いです。私が見つけた最も有用なものはruby wikiからこれです:
テストケースクラスは、他のテストケースを必要とRubyファイルですテストスイートに一緒に集めることができます。
#ファイル:ts_allTheTests.rb
'はtestTwo'
が関連テストケース、このように 'testThree'を必要とする必要
'はTESTONE'
を必要 'テスト/ユニット' を必要とします自然にグループ化することができます。さらに、テストスイートには他のテストスイートを含めることができ、テスト階層を構築することができます。$LOAD_PATH << File.dirname(__FILE__) require 'test/unit' Dir.glob('test/test_*', &method(:require))
だから私は2つの手法を組み合わせた場合:以前、私は私のテストディレクトリにサブディレクトリを回避し、私のRakefileにこのような何かをやって、または実際にテストを実行し任意のルビーファイルされていた
私は、各ディレクトリに対して、そのディレクトリからのテストが動的に必要なファイルを持っています。これは、親ディレクトリのファイルが必要とします。しかし、これは退屈を避ける私の元々の努力を打ち負かしているようだ。
次に、関連性はあるものの、文書化されていないと聞きました。someclassesがruby-docです。しかし、それは私が簡単に逃したかもしれないTest::Unitの上に利用可能なより多くの情報があるように見えます。私はまだそれをすべて読んでいないが、それは有望に見える。
@nash:これは私が無礼だと知った最初のコメントです。 –
申し訳ありませんが、本当に失礼でした。私はそれを理解しようとします。たとえば、rspec specフォルダ(https://github.com/rspec/rspec-core/tree/master/spec)を見ることができます。これらの人は実際にスペックを書く方法を知っています。またすみません。 –