12

私はJavaで約3年以上プログラミングしていますが(日常的ではありませんが、少なくとも基本は理解しています)、ユニットテストの分野にはあまり入っていません...

私の仕事は現在、よりテスト/問題分析指向であるため、優れた Java ユニット テスト フレームワークがこの役割に非常に役立つと考えています。

明らかに、私のチームでどのフレームワークを使用するかについての正式な規則はありません。初心者として、すぐに始めるのに適したフレームワークはどれでしょうか?

ジュニット?

テストNG?

または、他の何か?

編集: Amazon の TestNG と比較して、JUnit にはリファレンスとしてより多くの印刷された本があるようです。しかし、今のところJava業界での人気/傾向はわかりません。

4

12 に答える 12

31

私は TestNG の作成者であり、"Next Generation Testing" の本の著者でもあります。

機能 (またはエンド ツー エンド / 統合 / システムなど、お好みの用語) のテストのために、TestNG は、JUnit にはなく、ユーザーが非常に便利だと感じたいくつかの機能を提供します。

  • グループ。テストをコンパイルしたら、TestNG にすべての「フロントエンド」テスト、または「高速」、「低速」、「データベース」などを実行するように指示するだけです。

  • マルチスレッド テストのサポート。これには 2 つの異なる意味があります。

1) TestNG に、定義したスレッド プールですべてのテストを同時に実行するように指示できます (XML ファイルの 1 行の変更)。これは、マルチスレッド化されていないテストをシングル スレッドで実行できるように、非常に柔軟に設定できます。

2) TestNG に p スレッドから n 回テスト メソッドを呼び出すように指示できます。これにより、テストしているコードがどの程度スレッド セーフであるかがよくわかります。

  • 依存関係と決定論的な順序付けをテストします。これは、実行前に成功するために事前のテスト メソッドを必要とするテスト メソッドがよく見られる統合テストに非常に役立ちます。TestNG は、この特定の理由で Selenium コミュニティで非常に人気があります (「ログイン テストが失敗した場合は、Web サイトのこのページをテストしないでください」)。

テスト依存関係のもう 1 つの直接的な利点は、TestNG が「1 つのメソッドが失敗し、99 個のメソッドがスキップされました」と通知できることです。これは、「100 個のメソッドが失敗しました」よりもはるかに正確な結果です。

TestNG にはさらに多くの機能があり、ここまたはメーリング リスト ( http://groups.google.com/group/testng-users ) で質問にお答えします。

于 2010-08-05T17:26:28.793 に答える
6

Unitilsで TestNG を学びます。常に私のすべてのニーズをカバーしました。XMLUnit と DBUnit を追加すると、長い間解決するはずです。

于 2010-08-05T04:37:08.710 に答える
3

完全に正直に言うと、少なくとも私が働いて住んでいるここでは、JUnit は TestNG よりもはるかに人気があります。これは奇妙な議論かもしれませんが、私があなただったら、いくつかの求人情報に目を通し、どのフレームワークがあなたの地域/国の業界に支持されているかを確認します (たとえば、私はそのため JUnit を使用します。つまり、確かに TestNG を学ぶことができれば、それはより良いものになるかもしれませんが、すべての雇用主が JUnit の知識を必要とする場合、それは私にとって何の役に立つでしょうか?)。

于 2010-08-05T08:04:33.583 に答える
2

JUnit は、Eclipse を含む多くの IDE で非常によくサポートされており、アノテーション付きの JUnit 4 は非常に使いやすいです。

特定のニーズがない限り、jUnit などのツール サポートを利用してください。

于 2010-08-05T07:54:49.153 に答える
2

どちらも同じようにうまく機能するので、どちらが正しいとか間違っているということはありません。両方を多数のフレームワークと組み合わせて使用​​して、開発をサポートできます。

クライアントのために働く必要がある場合は、使用が期待されるものを学ぶことができます。そうでない場合は、両方を試して、自分に最適なものを見つけることをお勧めします。

于 2010-08-05T05:15:33.190 に答える
2

ささいな基準のように思えるかもしれませんが、すべての条件が同じであれば、仕事の傾向は JUnit に非常に有利であるように見えます。

http://www.indeed.com/jobtrends?q=TestNG%2C+JUnit&l=

于 2010-08-05T05:00:56.860 に答える
2

私は両方を使用しましたが、単体テストでは jUnit のみが非常にうまく機能することがわかりましたが、システム テストに関しては TestNG をお勧めします。TestNG はいくつかの追加機能 (パラメトリック テストなど) を提供し、非常に柔軟です。たとえば、jUnit ではスイートで 1 つのテストが失敗すると、通常はスイート全体を再実行する必要がありますが、TestNG では失敗したテストを再実行するだけです。両方を概説した非常に優れた記事があります(ただし、TestNGに少し偏っています)

http://www.ibm.com/developerworks/java/library/j-cq08296/index.html

于 2010-08-05T05:21:45.573 に答える
1

Unitils を使用した TestNG は本当に素晴らしいです。ほぼすべての要件をカバーしています。Unitils は多くのアサーション utils、Spring、Hibernate、モック フレームワーク、dbutils などをサポートします。

于 2010-08-05T04:40:33.987 に答える
1

私にとって、それは単なる好みの問題です。私は個人的に jUnit を 5 年以上毎日使用してきましたが、特に最後のバージョンと、チームが同じコードを何度も書くのを防ぐ @Rule 機能に非常に満足しています。IDE、ビルド、継続的統合など、私が毎日使用するすべてのツールとうまく統合できます。

于 2010-08-05T05:24:08.223 に答える
1

Junit は有名であり、最高の単体テスト ツールです。あなたも私も、Junit が非常に重要であることを知っていると思います。そのため、Java 開発者は、junit の貢献としてコーディング パターンを変更しています。基本的な単体テスト技術としての Junit を学ぶことができ、2 つ目の単位として testng を学ぶこともできます。テスト技術。

次のリンクが役に立つかもしれません! http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-starting/

于 2010-08-26T09:21:27.983 に答える
0

Junitは開始するのに最適な場所です。Junit 4.xには、アノテーションなどの多くの豊富な機能があり、Springなどの一般的なフレームワークから優れたサポートを受けています。

于 2010-08-05T10:49:21.917 に答える
-1

私はJUnitに行きます。

于 2010-08-05T04:37:21.813 に答える