どのようにJunit5にTemporaryFolderルールを取り除くために

キリル:

私はJunit5にJunit4から単体テストを移行しています。テストでは私が使用しているTemporaryFolder ルール Junit4のAPIからを。I追加作業テストを維持するには@EnableRuleMigrationSupport、注釈を:

@EnableRuleMigrationSupport
public final class SomeTest {

    @Rule
    public final TemporaryFolder tmp = new TemporaryFolder();

   // tests ...
}

私は理解しているように、Junit5 Iニーズに使用する拡張子の代わりのルールを、私はのための任意の代替を見つけることができませんTemporaryFolderJunit5拡張でを。それは存在していますか?どのように正しく置き換えるためTemporaryFolderの拡張子を持つルールを?

なスロー:

あなたは使用することができる@TempDirで説明したアノテーション(JUnitの5.4+)、JUnitの5ユーザーガイドの§2.20.1をユーザーガイド(から重点鉱山):

内蔵のTempDirectory拡張は、個々のテストまたはテストクラス内のすべてのテストのための一時ディレクトリを作成して、クリーンアップするために使用されます。これは、デフォルトで登録されています。これを使用するには、タイプの非プライベートフィールド注釈を付けjava.nio.file.Pathたりjava.io.Fileとし@TempDirたり型のパラメータを追加java.nio.file.Pathまたはjava.io.Fileで注釈を付け@TempDir、ライフサイクルメソッドや試験方法にします。

注:この拡張バージョンで追加された5.4と(のように現在5.5.1の実験)。

インスタンスフィールドの使用例:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File

class SomeTests {

    @TempDir
    Path directory; // must be non-private

}

試験方法のパラメータの使用例:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File

class SomeTests {

    @Test
    void testFoo(@TempDir Path directory) {
        // do test...
    }

}

注意:コンストラクタのパラメータがサポートされていません。

ディレクトリが作成され、削除された場合に記述されているのJavadocを@TempDir

一時ディレクトリの作成

ライフサイクル方法やテスト方法でテストクラス内のフィールドまたはパラメータがで注釈されている場合、一時ディレクトリにのみ作成されます@TempDirフィールドタイプまたはパラメータタイプはどちらもされていない場合PathFileまたは一時的なディレクトリを作成することができない場合、ExtensionConfigurationExceptionまたはParameterResolutionException適切にスローされます。また、ParameterResolutionExceptionとの注釈付きコンストラクタパラメータにスローされます@TempDir

一時ディレクトリスコープ

一時ディレクトリのスコープは、最初の場所に依存する@TempDirテストクラスを実行する際に、注釈が検出されました。注釈が上に存在するとき、一時ディレクトリには、クラス内のすべてのテストで共有されるstaticフィールドまたはパラメータの@BeforeAll方法。それ以外の場合-たとえば、ときに@TempDirのみ、インスタンスフィールド上またはテスト中のパラメータに使用されている@BeforeEach、または@AfterEach方法-各テストは独自の一時ディレクトリを使用します。

一時ディレクトリの削除

一時ディレクトリのスコープの終わりに達したときにテストメソッドまたはクラスが完成し、実行しているとき、すなわち、JUnitは、最終的には、一時ディレクトリ自体を再帰的に一時ディレクトリ内のすべてのファイルとディレクトリを削除しようとします。ファイルまたはディレクトリが失敗した場合の削除には、IOExceptionそれがテストまたはテストクラスが失敗する原因になりますスローされます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=336448&siteId=1