Anda dapat menggunakan @TempDir
anotasi (JUnit 5.4+), dijelaskan dalam §2.20.1 dari Panduan Pengguna JUnit 5. Dari panduan pengguna (penekanan milik saya):
Ekstensi TempDirectory
bawaan digunakan untuk membuat dan membersihkan direktori sementara untuk pengujian individual atau semua pengujian di kelas pengujian. Ini terdaftar secara default. Untuk menggunakannya, beri anotasi pada bidang non-pribadi jenis java.nio.file.Path
atau java.io.File
dengan @TempDir
atau tambahkan parameter jenis java.nio.file.Path
atau java.io.File
yang diberi anotasi @TempDir
ke metode siklus hidup atau metode pengujian.
Catatan: Ekstensi ini ditambahkan pada versi 5.4
dan saat ini (mulai 5.7.2
) bersifat eksperimental.
Contoh penggunaan bidang instance:
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
}
Contoh penggunaan parameter metode pengujian:
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...
}
}
Catatan: Parameter konstruktor tidak didukung.
Kapan direktori dibuat dan dihapus dijelaskan di Javadoc dari @TempDir
:
Pembuatan Direktori Sementara
Direktori sementara hanya dibuat jika bidang dalam kelas pengujian atau parameter dalam metode siklus hidup atau metode pengujian dianotasi dengan @TempDir
. Jika tipe bidang atau tipe parameter bukan Path
atau File
atau jika direktori sementara tidak dapat dibuat, ExtensionConfigurationException
atau ParameterResolutionException
akan ditampilkan sebagaimana mestinya. Selain itu, ParameterResolutionException
akan ditampilkan untuk parameter konstruktor yang dianotasi dengan @TempDir
.
Lingkup Direktori Sementara
Cakupan direktori sementara bergantung pada tempat anotasi @TempDir
pertama ditemukan saat menjalankan kelas pengujian. Direktori sementara akan dibagikan oleh semua pengujian di kelas ketika anotasi ada pada bidang static
atau pada parameter metode @BeforeAll
. Jika tidak — misalnya, ketika @TempDir
hanya digunakan pada kolom instance atau pada parameter dalam metode pengujian, @BeforeEach
, atau @AfterEach
— setiap pengujian akan menggunakan direktori sementaranya sendiri.
Penghapusan Direktori Sementara
Ketika akhir cakupan direktori sementara tercapai, yaitu ketika metode pengujian atau kelas telah selesai dieksekusi, JUnit akan mencoba menghapus semua file dan direktori di direktori sementara dan, terakhir, direktori sementara itu sendiri secara rekursif. Jika penghapusan file atau direktori gagal, IOException
akan dilempar yang akan menyebabkan tes atau kelas pengujian gagal.
person
Slaw
schedule
15.06.2019