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!