2017-12-11 14 views
0

それぞれに複数のテストを実行する複数のJUnitテストクラスがあります。私はすべてのテストクラスの親であるベーステストクラスを持っています。 @BeforeAllより前に実行し、すべてのテストクラスで@AfterAllの後に実行するベーステストクラスにメソッドを書く方法はありますか?または、実装可能なinterface、またはこの問題を解決するために拡張できるクラスがありますか?JUnit - @BeforeAllの前に実行するメソッドと@AfterAllの後に実行するメソッド

BaseJUnitTest.class

import org.junit.jupiter.api.AfterAll; 
import org.junit.jupiter.api.AfterEach; 
import org.junit.jupiter.api.BeforeAll; 
import org.junit.jupiter.api.BeforeEach; 
import org.junit.platform.runner.JUnitPlatform; 
import org.junit.runner.RunWith; 

@RunWith(JUnitPlatform.class) 
public class BaseJUnitTest { 

    // method to execute before all JUnit test classes 

    @BeforeAll 
    public static void beforeAll() throws Exception { 

    } 

    @AfterAll 
    public static void afterAll() throws Exception { 

    } 

    @BeforeEach 
    public void beaforeEachTest() { 

    } 

    @AfterEach 
    public void afterEachTest() { 

    } 

    // method to execute after all JUnit test classes 
} 

SampleTest.class

public class SampleTest extends BaseJUnitTest { 

@Test 
public void test1() { 
    System.out.println("SampleTest test1"); 
} 
} 

注:このシナリオでは、私はそれが問題であまり程度ません願っていますが、私は、JUnitの5を使用していますJUnit 4または5

答えて

1

私は基本テストクラスの代わりに "テストスイート"が必要だと思います。このスイートには、テストケースが含まれます。このテストスイートクラスでは、@Beforeclassと@Afterclassを使用して、スイート内に存在するすべてのテストの前または後に行う必要のある作業を組み込みます。ここで

はサリムによってBefore and After Suite execution hook in jUnit 4.x

+0

私は上記の記事を読んでいます。私はテストユーティリティjarを設計しています。 '' BaseJUnitTest''は、テスターが気にする必要のないいくつかの報告、ログ記録などを行います。私は 'BaseJUnitTest'をjarファイルの一部としてパックする必要があります。このシナリオでは、' BaseJUnitTest'にTestのListクラスを提供する方法はありますか? – balu

0

まず答えが移動するための方法である、詳細な答えです。コメント内の他のクエリに答えるには、@SuiteClassesアノテーションを使用してスーツの一部であるクラスを登録する必要があります。

はEDIT:

は、他の方法でラウンドテストケースを登録するには、リフレクションを移動するための方法です。 ClassFinder、TestCaseLoader、およびTestAllクラスを実装する必要があります。 TestAllは依存関係のあるjarの一部である可能性がありますが、プロジェクトごとにTestCaseLoaderを定義することができます。詳しい例はここにあります: https://www.javaworld.com/article/2076265/testing-debugging/junit-best-practices.html?page=2

+0

私はJar(テストユーティリティ)にスイートクラスをパッケージ化し、ユニットテストを書くためにプロジェクト間で共有しているので、すべてのテストを含める必要があるという手掛かりはありません。 – balu

関連する問題