0

私の場合は TestSuite.class と呼ばれる JUnit Suite クラスが、独自の Test、Before、After アノテーションを実行しないのはなぜですか? 独自の BeforeClass、AfterClass、およびスイート テスト クラスのすべてのアノテーションのみを実行します。この理論に基づいてテストプロジェクトを作成することで、これが事実であることを証明しました: https://gist.github.com/djangofan/5033350

これが説明されている場所を教えてもらえますか?私はこれを本当に理解する必要があります。

4

3 に答える 3

1

TestSuite はテスト自体ではないためです。これらの注釈は単体テスト専用です。例については、こちらを参照してください。

public class FeatureTestSuite {
  // the class remains empty <----- important for your question
}
于 2013-02-25T23:09:52.910 に答える
0

TestSuite は、共通の動作を適用したいテストのグループを識別する方法です。

おそらく、例を挙げて説明したほうがよいでしょう。

たとえば、データベース MyDB の Orders テーブルで基本的な CRUD テストを行っていたとします。誰もがそこに mydb があり、orders テーブルが存在する必要があるため、それらをスイートに配置します。データベースとテーブルをセットアップし、テストを実行し、スイートが範囲外になる前にデータベースを削除すると、すべてが次のテスト実行のためにきれいになります。そうしないと、高価なすべてのテストでそれを行う必要があり、さらに悪いことに、以前のテストからのテストデータにより、他のテストが明らかにランダムに失敗することがよくあります。それらの間に暗黙の依存関係を作成したからです。同じことを達成する方法は他にもありますが、それらはテストを混乱させ、呼び出すことを覚えておく必要があります。

テストする必要はありません。完了しない場合、テストは実行されません。

于 2013-02-25T23:44:19.273 に答える
0

他の人が言ったように、それは a が aTestSuiteではないからTestです。これは、実行しやすいように、他のテストをグループ化するための注釈を付けた単なるクラスです。

ただし、1 つの特別なプロパティがあり、それは@BeforeClassandの実行です@AfterClass。これらは、スイートのグローバルなセットアップ/ティアダウンを可能にするために有効になっています。テスト (またはルールを含む@After)は実行されません。@Before

于 2013-02-26T08:19:22.700 に答える