Ada perbedaan dan kendala dalam opsi yang ditawarkan oleh @Steve C dan @ ashosborne1. Mereka harus ditentukan, saya percaya.
Kapan kita bisa menggunakan File resourcesDirectory = new File("src/test/resources");
:?
- 1 Ketika tes akan dijalankan melalui pakar saja tetapi tidak melalui IDE.
- 2.1 Ketika tes akan dijalankan melalui pakar atau
- 2.2 via IDE dan hanya satu proyek yang diimpor ke IDE. (Saya menggunakan istilah "diimpor", karena ini digunakan dalam IntelliJ IDEA. Saya pikir pengguna eclipse juga mengimpor proyek pakar mereka). Ini akan berfungsi, menyebabkan direktori yang berfungsi ketika Anda menjalankan tes melalui IDE sama dengan proyek Anda.
- 3.1 Ketika tes akan dijalankan melalui pakar atau
- 3,2 melalui IDE, dan lebih dari satu proyek diimpor ke IDE (ketika Anda bukan mahasiswa, Anda biasanya mengimpor beberapa proyek), DAN sebelum Anda menjalankan tes melalui IDE, Anda secara manual mengkonfigurasi direktori kerja untuk tes Anda. Direktori kerja itu harus merujuk ke proyek Anda yang diimpor yang berisi tes. Secara default, direktori kerja semua proyek yang diimpor ke IDE hanya satu. Mungkin itu adalah pembatasan
IntelliJ IDEA
saja, tapi saya pikir semua IDE bekerja seperti ini. Dan konfigurasi ini yang harus dilakukan secara manual, tidak baik sama sekali. Bekerja dengan beberapa tes yang ada di berbagai proyek pakar, tetapi diimpor ke dalam satu proyek "IDE" besar, memaksa kami untuk mengingat ini dan tidak mengizinkan untuk bersantai dan mendapatkan kesenangan dari pekerjaan Anda.
Solusi yang ditawarkan oleh @ ashosborne1 (secara pribadi saya lebih suka yang ini) memerlukan 2 persyaratan tambahan yang harus dilakukan sebelum Anda menjalankan tes. Berikut adalah daftar langkah-langkah untuk menggunakan solusi ini:
Buat folder uji ("teva") dan file ("readme") di dalam "src / test / resources /":
src / test / resources / teva / readme
File harus dibuat di folder tes, jika tidak, itu tidak akan berfungsi. Maven mengabaikan folder kosong.
Setidaknya satu kali membangun proyek melalui mvn clean install
. Ini akan menjalankan tes juga. Mungkin cukup hanya menjalankan kelas uji / metode Anda melalui pakar tanpa membangun keseluruhan proyek. Alhasil sumber daya pengujian Anda akan disalin ke kelas-kelas tes, di sini ada jalannya:target/test-classes/teva/readme
Setelah itu, Anda dapat mengakses folder menggunakan kode, yang sudah ditawarkan oleh @ ashosborne1 (Maaf, saya tidak dapat mengedit kode ini di dalam daftar item ini dengan benar):
public static final String TEVA_FOLDER = "teva"; ...
URL tevaUrl = YourTest.class.getClassLoader().getResource(TEVA_FOLDER);
String tevaTestFolder = new File(tevaUrl.toURI()).getAbsolutePath();
Sekarang Anda dapat menjalankan tes Anda melalui IDE sebanyak yang Anda inginkan. Sampai Anda menjalankan mvn clean. Ini akan menjatuhkan folder target.
Membuat file di dalam folder tes dan menjalankan pakar pertama kali, sebelum Anda menjalankan tes melalui IDE diperlukan langkah-langkah. Tanpa langkah-langkah ini, jika Anda hanya di IDE membuat sumber daya pengujian, kemudian menulis tes dan menjalankannya hanya melalui IDE, Anda akan mendapatkan kesalahan. Menjalankan tes melalui mvn menyalin sumber daya pengujian ke target / kelas-tes / teva / readme dan mereka dapat diakses oleh classloader.
Anda mungkin bertanya, mengapa saya perlu mengimpor lebih dari satu proyek pakar dalam IDE dan mengapa begitu banyak hal yang rumit? Bagi saya, salah satu motivasi utama: menjaga file terkait IDA jauh dari kode. Saya pertama kali membuat proyek baru di IDE saya. Ini adalah proyek palsu, itu hanya pemegang file terkait IDE. Kemudian, saya mengimpor proyek pakar yang sudah ada. Saya memaksa proyek-proyek yang diimpor ini untuk menyimpan file IDEA hanya dalam proyek palsu asli saya. Akibatnya saya tidak melihat file terkait IDE di antara kode. SVN seharusnya tidak melihatnya (jangan menawarkan untuk mengkonfigurasi svn / git untuk mengabaikan file seperti itu, silakan). Juga sangat nyaman.