Java について今学ぶべき UnitTest フレームワークはどれですか?[閉まっている]
-
26-09-2019 - |
質問
私は Java を使って約 3 年以上プログラミングをしてきましたが (毎日ではありませんが、少なくとも基礎は理解しています)、単体テストの分野にはあまり参入したことがありません。
私の仕事は現在、よりテスト/問題分析指向になっているため、優れた Java 単体テスト フレームワークがこの役割に非常に役立つと考えています。
明らかに、私のチームでどのフレームワークを使用するかについての正式なルールはありません。初心者として、すぐに始めるのに適したフレームワークはどれだろうか?
ジュニット?
テストNG?
または、他の何か?
編集:JUnit には、Amazon の TestNG に比べて、より多くの印刷書籍が参考資料として提供されているようです。しかし、Java 業界での人気や傾向は今のところわかりません。
解決
私は TestNG の作成者であり、「Next Generation Testing」という本の著者でもあるので、ここでは (明らかに偏見のある) 考えをいくつか紹介します。
機能 (またはエンドツーエンド / 統合 / システムなど、お好みの用語で) テストの場合、TestNG は、JUnit にはない、ユーザーが非常に便利だと感じているいくつかの機能を提供します。
グループ。テストをコンパイルしたら、TestNG にすべての「フロントエンド」テスト、または「高速」、「低速」、「データベース」などのテストを実行するよう依頼するだけです。
マルチスレッドテストのサポート。これには 2 つの異なる意味があります。
1) 定義したスレッド プールですべてのテストを同時に実行するように TestNG に指示できます (XML ファイル内の 1 行の変更)。これは非常に構成可能であるため、マルチスレッド化されていないテストもシングルスレッドで実行できます。
2) TestNG に、p 個のスレッドからテスト メソッドを n 回呼び出すように指示できます。これにより、テストしているコードがどの程度スレッドセーフであるかがわかります。
- 依存関係と決定的な順序付けをテストします。これは、実行する前に前のテスト メソッドが成功する必要があるテスト メソッドがよく見られる統合テストに非常に役立ちます。TestNG は、この特別な理由 (「ログイン テストが失敗した場合、Web サイトのこのページをわざわざテストする必要はない」) により、Selenium コミュニティで非常に人気があります。
テストの依存関係のもう 1 つの直接的な利点は、TestNG が「1 つのメソッドが失敗し、99 のメソッドがスキップされた」ことを通知できることです。これは、「100 のメソッドが失敗した」よりもはるかに正確な結果です。
TestNG にはさらに多くの機能があり、ここまたはメーリング リストで喜んで質問に答えます (http://groups.google.com/group/testng-users ).
他のヒント
私は UnitilsするでTestNGのを学ぶでしょう。すべての私のニーズにすべての時間をカバーしました。 XMLUnitとDBUnitのを追加し、あなたが長い時間のために定住する必要があります。
は完全に正直に言うと、私のJUnitはどこの仕事やライブ、少なくともここで、TestNGのより方法がより人気があります。私は、これは奇妙な引数かもしれないけど、私があなただったら、私は追加し、いくつかの仕事をスキャンし、そのことを、私が意味するので、例えば、私はJUnitのために行くよ(お住まいの地域/国の賛成で業界をしているフレームワーク参照してくださいね必ず私はTestNGのを学ぶことができる、それが良いことが判明するかもしれませんが、すべての雇用者は、JUnitの知識を必要とする場合、それは私に何が良いのだろう?)。
は、すべてのものが対等であること、それが重くJUnitのを好む仕事のトレンドのように見えます。
http://www.indeed.com/jobtrends?q= TestNGの%2C + JUnitの&L = の
は、どちらも同様にうまく自分の仕事を行うので、全く正しいか間違ってはありません。あなたは、あなたの開発を支援するための多数のフレームワークと組み合わせて両方を使用することができます。
あなたは、クライアントのために仕事に必要がある場合は、、あなたはあなたが使用することに期待しているというものを学ぶことができます。ない場合は、最高のアイデアは、それらの両方を試してみて、あなたのための最高の作品かを調べることです。
私は両方を使用しましたが、単体テストでは jUnit のみが非常にうまく機能することがわかりましたが、システム テストの観点からは TestNG をお勧めします。TestNG は、いくつかの追加機能 (パラメトリック テストなど) を提供し、非常に柔軟性があります。たとえば、jUnit では、スイートで 1 つのテストが失敗すると、通常、スイート全体を再実行する必要がありますが、TestNG では、失敗したテストを再実行するだけで済みます。両方について概説した非常に優れた記事があります (ただし、TestNG に少し偏っています)
http://www.ibm.com/developerworks/java/library/j-cq08296/index.html
はJUnitは非常によく、多くのIDEのEclipseの、注釈付きのJUnit 4を含むでサポートされています。
での仕事に非常にいいですあなたが特定のニーズを持っている場合を除き、その後、すなわちJUnitの、ツールのサポートのために行く。
UnitilsとTestNGのは、本当に素晴らしいです。それはほとんどすべての要件をカバーしています。 Unitilsはdbutilsなど、フレームワークをあざける、アサーションutilsの、春は、Hibernateの多くをサポートしています。
私にとって、それは単なる好みの問題です。私はpersonnaly今5年以上、毎日のJUnitを使用しましたし、私は特に、同じコード何度でもを足すから私のチームを防ぐ最後のバージョンとその@Rule機能と、それに非常に満足しています。 それは私が毎日使用するすべてのツールと統合:IDE、ビルド、継続的インテグレーション...
JUnitのは有名ですが、最高のユニットテストツール、私はあなたと私の両方のノウハウJUnitのは、Java開発者は、JUnitの貢献としてのコーディングパターンを変更し、あなたが基本的なユニットテスト技術として、いくつかのJUnitのを学ぶだけでなく、TestNGのを学ぶことができるように重要そうだと思います第二ユニットテスト技術としてます。
次のリンクは多分あなたのために有用です! http://www.javarmi.com / 2010/08 / JUnitの-4-チュートリアル - と - 例 - 取得開始/ の
JUnitは開始するのに最適な場所です。 JUnitの4.xでは、多くの豊富な注釈等のような機能にも春のような人気のフレームワークからその取得の良いサポートを持っています。
私はJUnitのために行くだろう。