2017-10-31 13 views
0

ここに学生。 JUnit 5では、別のテストが成功したか失敗したかに基づいて条件テストを実行する最良の方法は何ですか?私はそれがExecutionConditionを含むだろうと推測しますが、私はどのように進むべきかは不明です。テストクラスに自分の状態を追加することなくこれを行う方法はありますか?JUnit 5 - 別のテスト合格に依存してテスト実行を行う方法

私はdependent assertionsを認識していますが、別のサブ状態を表すnested testsが複数あるため、テストレベル自体でこれを行う方法が欲しいと思います。

例:

@Test 
void testFooBarPrecondition() { ... } 

// only execute if testFooBarPrecondition succeeds 
@Nested 
class FooCase { ... } 

// only execute if testFooBarPrecondition succeeds  
@Nested 
class BarCase { ... } 

答えて

1

あなたはその後、条件テストの実行のために、正確に開発されたassumptionsを使用し、@ BeforeEach/@ BeforeAll設定方法では、共通の前提条件ロジックを抽出することによって、問題を解決することができます。いくつかのサンプルコード:

class SomeTest { 

@Nested 
class NestedOne { 
    @BeforeEach 
    void setUp() { 
     boolean preconditionsMet = false; 
     //precondition code goes here 

     assumeTrue(preconditionsMet); 
    } 

    @Test // not executed when precodition is not met 
    void aTestMethod() {} 
} 

@Nested 
class NestedTwo { 
    @Test // executed 
    void anotherTestMethod() { } 
} 

}

+0

Javaの命名規則に準拠するために助言を与えます。クラス名はUpperCaseになります。常に。 – GhostCat

+1

JUnit5でのテスト実行の順序は明確に定義されていますか? – Henrik

+1

@Henrik JUnit5での順序付けられたテストの実行はまだサポートされていません。彼らはリフレクションを使用してメソッド名を見つけます.Java 7以降、リフレクションによって返されるメソッドの順序は定義されていません。私は、プロジェクトをフォローしていて、これが5.0.0リリースから削除されたので、彼らは将来何らかのサポートを追加することを検討していると思います。 – Kotse