Dapatkan Laluan Direktori / src / test / resources di JUnit

1. Gambaran keseluruhan

Kadang-kadang semasa ujian unit, kita mungkin perlu membaca beberapa fail dari classpath atau meneruskan fail ke objek yang sedang diuji. Atau, kami mungkin mempunyai fail dalam src / test / resource dengan data untuk rintisan yang dapat digunakan oleh perpustakaan seperti WireMock.

Dalam tutorial ini, kami akan menunjukkan bagaimana untuk membaca jalan yang / src / ujian / sumber direktori .

2. Pergantungan Maven

Pertama, kita perlu menambahkan JUnit 5 ke pergantungan Maven kami:

 org.junit.jupiter junit-jupiter-engine 5.4.2 

Kita boleh mendapatkan versi terbaru JUnit 5 di Maven Central.

2. Menggunakan java.io.File

Pendekatan termudah menggunakan contoh kelas java.io.File untuk membaca direktori / src / test / resources , dengan memanggil kaedah getAbsolutePath () :

String path = "src/test/resources"; File file = new File(path); String absolutePath = file.getAbsolutePath(); System.out.println(absolutePath); assertTrue(absolutePath.endsWith("src/test/resources"));

Perhatikan bahawa jalan ini relatif dengan direktori kerja semasa , yang bermaksud direktori projek.

Mari lihat contoh output semasa menjalankan ujian di macOS:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/src/test/resources

3. Menggunakan Laluan

Selanjutnya, kita dapat menggunakan kelas Path , yang diperkenalkan di Java 7 .

Pertama, kita perlu memanggil kaedah kilang statik - Paths.get (). Kemudian, kita akan menukar Path to File. Pada akhirnya, kita hanya perlu memanggil getAbsolutePath () , seperti contoh sebelumnya:

Path resourceDirectory = Paths.get("src","test","resources"); String absolutePath = resourceDirectory.toFile().getAbsolutePath(); System.out.println(absolutePath); Assert.assertTrue(absolutePath.endsWith("src/test/resources")); 

Dan, kita akan mendapat output yang sama seperti contoh sebelumnya:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/src/test/resources

4. Menggunakan ClassLoader

Akhirnya, kita juga boleh menggunakan ClassLoader :

String resourceName = "example_resource.txt"; ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource(resourceName).getFile()); String absolutePath = file.getAbsolutePath(); System.out.println(absolutePath); assertTrue(absolutePath.endsWith("/example_resource.txt")); 

Dan, mari kita lihat outputnya:

/Users/user.name/my_projects/tutorials/testing-modules/junit-5-configuration/target/test-classes/example_resource.txt

Perhatikan bahawa kali ini, kami mempunyai fail /junit-5-configuration/target/test-classes/example-resource.txt . Ia berbeza ketika kita membandingkan hasilnya dengan kaedah sebelumnya.

Ini kerana yang ClassLoader kelihatan untuk sumber-sumber di classpath itu . Di Maven, kelas dan sumber yang dikumpulkan dimasukkan ke dalam / target / direktori. Itulah sebabnya kali ini, kami mendapat jalan menuju sumber jalan kelas.

5. Kesimpulan

Kesimpulannya, dalam tutorial ringkas ini kita telah membincangkan cara membaca direktori / src / test / resources di JUnit 5.

Bergantung pada keperluan kita, kita dapat mencapai matlamat kita dengan pelbagai kaedah: dengan menggunakan kelas File , Paths , atau ClassLoader .

Seperti biasa, anda boleh menemui semua contoh kami di projek GitHub kami!