2010-11-23 20 views
14

私はjUnitに精通しており、TestNGがjUnitの迷惑な点のいくつかの解決策かもしれないと聞きました。テストごとにテストクラスの別のインスタンスを作成し、テスト間で再利用したいオブジェクトに静的フィールドを使用させなければならないという主張です。jUnitと比較したTestNGの欠点?

JUnitのに比べて、TestNGのは持っていない欠点が何である、

が、私はここで何を求めている(例えば、あなたが、これは欠点であることを私と一緒に同意し、そうでないものにこの質問を回していないとしましょうか)?これは新しいプロジェクトであり、移行コストはないと仮定して、なぜTestNGを使用しないのですか?

+0

テスト間でオブジェクトを再利用すると、テスト間の結合が増加することにご注意ください。1つのテストで問題が発生し、別のテストで問題(または例外)が発生する可能性があるため、結合テストは優れた単体テストの完全なベーンです。 –

+0

@Donal - これについては質問しません。多くのコンポーネントで大量の統合テストを記述する場合、テスト実行に数時間かかる可能性があるため、再利用しないことも別の問題です。 – ripper234

+0

合意。これは側面の問題です。 –

答えて

5

私は個人的にJUnitと比較して重大な欠点に遭遇していません。

新しいプロジェクトの開始時に、チームはTestNGに切り替えて後悔しませんでした。 TestNGはより強力で、単体テストより幅広い用途をサポートします。

一部のツールはJUnitをサポートしますが、TestNGはサポートしていません。これらは私がまだ必要としていないツールです。例:

  • GoogleのCodePro Analytixはgeneration of JUnit unit testsをサポートしています。
  • RCP開発用Eclipse IDEは、「JUnitプラグインテスト」の実行/デバッグ構成をサポートしています。
6

私はTestNGの作成者です。私は明らかに偏っているので、体重を計るつもりはありませんが、TestNGについて質問があれば答えます。

Andy:ご意見ありがとうございます。 FYI(おそらくあなたはすでに知っているかもしれませんが、元のポスターはそうではないかもしれません)、there is a TestNG Eclipse plug-in(私はTestNGと並行して開発しています)。

+0

こんにちは:) "あなた"を満たすためにニース、私はあなたがSOに人々を満たすことができることを愛する。私はTestNGを約10分間使っています...なぜあなたは@ Ignore属性を持っていないのですか? @Ignoreについて私が気に入っているのは、アノテーション内の無視理由を指定でき、AFAIKでは "enabled = false"で行うことができないということです。 – ripper234

+3

TestNGでは、テストを "@Test(enabled = false )」。これにより、初心者にとっての発見が容易になります(「@Test(コントロールスペースとタイプし、利用可能なすべての属性のリストを取得するだけです)。 –

3

TestNGの巨大な支持者である私はまだツールの作者によって2番のものとして扱われています。多くのツールとライブラリは当初からJUnitをサポートしていますが、TestNGのサポートも実装するまで待つ必要があります。最新の鳴動技術を使用する予定がある場合、これは重大な欠点かもしれません。

数年にわたり状況が大幅に改善されました。たとえば、これはSpring、Gradle、Maven Surefireの問題でしたが、TestNGをすべてサポートしているので問題はなくなりました。また、すべてのIDEは両方のフレームワークを同等に扱います。

したがって、使用する予定の他のテクノロジーがTestNGでうまく動作していることを確認してください。これはまれに問題になることはありませんが、それでも確実に先を確認してください。

1

私にとっては最大の問題はスプリングとの統合です。 私はTestNGのクラスを拡張して、このようなコードを書くことが好きではない:通常、私がテストクラスの私自身の階層構造を持っているので

@Test 
@ContextConfiguration(locations = { "classpath:spring-test-config.xml" }) 
public class TestSpring extends AbstractTestNGSpringContextTests { 

。 これがTestNgの使用をやめた主な理由でした。

私はパラメータ化されたテストが私にとって非常に魅力的であったことに同意する必要があります。しかし、彼らは簡単にjunitのデータプロバイダに置き換えることができます。

関連する問題