0

データをキャッシュにロードしてテスト ケースを実行する複数のテスト ケースがあります。テスト ケースは正常に実行されますが、すべてのテスト ケースを一度実行すると、テスト ケースごとに毎回キャッシュがロードされるため、多くの時間がかかります。キャッシュを 1 回ロードしてから、すべてのテスト ケースでキャッシュを使用する任意の方法。

それを行う 1 つの方法は、すべてのテスト ケースを 1 つのクラスに入れることですが、結果の分析が困難になるため、目的に反します (各クラスには約 5 ~ 10 のテスト メソッドがあり、約 30 のテスト クラスがあるため、レポートは生成される取得は非常に大きくなり、整理されません)。テスト スイートを使用してみましたが、テスト ケースが 1 つずつ実行されるため、各テスト ケースの後にキャッシュがシャットダウンされます。

4

3 に答える 3

6

すべてのテスト ケースの基本クラスとなる抽象クラスを作成できます。キャッシュはこのクラスに初期化され、その静的メンバーに格納される必要があります。次に、すべてのテストでこのキャッシュを使用する必要があります。

別の解決策は、キャッシュを管理するカスタム テスト ランナーを実装することです。次に、注釈を使用してキャッシュが必要なすべてのテスト ケースをマークし@RunWith、そこにテスト ランナー クラスを渡す必要があります。

于 2013-05-21T08:38:57.543 に答える
1

キャッシュを初期化する @BeforeClass メソッドを含むテスト スイートを作成し、そこにすべてのテスト ケースを追加します。これにより、後でテストクラスを簡単に追加することもできます。それが重要な場合は、それらを正しい順序で配置することを忘れないでください. 最上位の suiteclass が最初に実行されます。

@RunWith(Suite.class)
@Suite.SuiteClasses({
TestClass1.class,
TestClass2.class
)}
public class TestSuiteClass {
    @BeforeClass
   public void initCache() {
       //Your init code here.
   }
}

役立つリンク: http://junit.sourceforge.net/javadoc/org/junit/runner/RunWith.html http://junit.org/javadoc/4.9/org/junit/runners/Suite.SuiteClasses.html

もう少し包括的な例: http://www.tutorialspoint.com/junit/junit_suite_test.htm

于 2013-05-21T08:48:41.113 に答える
0

@BeforeClassがあなたのニーズを満たすと思っていたでしょう。

場合によっては、いくつかのテストで計算コストの高いセットアップを共有する必要があります (データベースへのログインなど)。これはテストの独立性を損なう可能性がありますが、場合によっては必要な最適化です。public static void no-arg メソッドに @BeforeClass のアノテーションを付けると、クラス内のテスト メソッドの前に 1 回実行されます。

これをスーパークラス内で利用すると、後続のサブクラスによってコード/テスト構成が簡素化される場合があります。

于 2013-05-21T08:36:52.567 に答える