Bisakah saya menjalankan pengujian unit IntelliJ dalam proyek maven tanpa menjalankan kembali tujuan maven?

Saya memiliki proyek dengan struktur pakar yang mendalam dan sedang mengevaluasi peralihan dari Eclipse ke IntelliJ.

Saya telah mengimpor pom.xml tingkat atas. Saya tahu bahwa saya bisa:

  1. Bangun seluruh proyek dengan tujuan pakar (saya menggunakan 'kompilasi tes' untuk membangun kelas pengujian)
  2. Jalankan tes dari test runner IntelliJ. Ini sepertinya menemukan kelas/kelas tes dari folder target proyek.

Namun, saya hanya ingin mengubah pengujian atau kode yang sedang diuji, menyimpannya, dan menjalankannya kembali tanpa harus menjalankan kompilasi pengujian maven lagi secara manual (seperti yang saya bisa lakukan dengan Eclipse). Apakah ini mungkin dengan IntelliJ?

Saya rasa masalahnya adalah tindakan 'Bangun Proyek' IntelliJ tidak membangun kelas pengujian (dan kelas lainnya) ke dalam folder target yang dicari oleh pelari pengujian.


person pduncan    schedule 01.05.2020    source sumber
comment
Pertama, Anda harus mengimpor seluruh proyek ke IntelliJ atau ke Eclipse. Anda cukup menjalankan kembali pengujian (dengan mengklik pengujian) setelah perubahan kode dalam IDE (baik Eclipse/IntelliJ) jika tidak, ada yang salah...selain itu, apakah build Anda berjalan dengan baik pada baris perintah biasa?   -  person khmarbaise    schedule 01.05.2020
comment
Saya telah mengimpor seluruh proyek ke IntelliJ. Menjalankan kembali pengujian tampaknya menjalankan pengujian dalam keadaan seperti saat terakhir kali dimasukkan ke dalam kelas target/pengujian. Faktanya jika saya membangun kembali proyek, itu akan menghapus semua file .class dari target, dan mencoba menjalankan tes lagi melaporkan Kelas tidak ditemukan.   -  person pduncan    schedule 01.05.2020
comment
Ada yang salah...BTW: Versi IDEA mana yang Anda gunakan?   -  person khmarbaise    schedule 01.05.2020


Jawaban (2)


Jika Anda mengimpor proyek Maven di IntelliJ IDEA, Anda akan dapat membangun dan menjalankan pengujian dari IDE alih-alih Maven yang jauh lebih cepat karena kompilasi tambahan.

Pastikan opsi ini dinonaktifkan dan gunakan konfigurasi JUnit Run/Debug, jangan jalankan maven sasaran.

person CrazyCoder    schedule 01.05.2020
comment
Saya menonaktifkan opsi itu dan saya menggunakan IntelliJ Run/Debug. Saya benar-benar merasa bahwa masalahnya adalah Test runner hanya mencari /target untuk kelas pengujian dan build IntelliJ menempatkannya di tempat lain. - person pduncan; 01.05.2020
comment
Pelari pengujian harus menggunakan classpath alih-alih direktori hardcode. Output IntelliJ IDEA tidak dibagikan dengan Maven, ini memang disengaja, namun tidak akan memengaruhi aplikasi dan pengujian yang ditulis dengan benar yang tidak bergantung pada lokasi direktori output. - person CrazyCoder; 01.05.2020
comment
Oke... adakah yang bisa saya debug untuk mengetahui mengapa ini tidak terjadi? - person pduncan; 01.05.2020
comment
Lihat classpath di baris perintah pengujian saat Anda memulai if dari IDE. Apakah itu berisi direktori keluaran? Apakah direktori keluaran ini memiliki file .class dan sumber daya yang diperlukan? Apakah kelas muncul di direktori keluaran ini setelah Anda menggunakan Build | Membangun? Apakah ada konfigurasi dalam pengujian Anda yang mereferensikan direktori target secara eksplisit? Contoh Minimal, Lengkap, dan Dapat Diverifikasi akan sangat dihargai jika Anda ingin mendapatkan bantuan di sini. - person CrazyCoder; 01.05.2020

Berkat saran dari @CrazyCoder, saya dapat menyelesaikannya dengan mengikuti langkah-langkah berikut, karena menurut saya masalahnya adalah artefak Eclipse berkelahi dengan artefak IntelliJ:

  1. Hapus semua file .classpath, .project, dan .iml dari seluruh pohon kode
  2. Hapus .idea dari root - kita harus memulai lagi
  3. Buka pom.xml tingkat atas di IntelliJ
  4. Jika perlu, lakukan mvn compile (diperlukan bagi saya karena beberapa sumber yang dihasilkan)
  5. Bangun kembali proyek Anda

Setelah ini, jangan buka proyek Anda di Eclipse lagi!

person pduncan    schedule 01.05.2020
comment
Selain itu, pada suatu waktu saya akhirnya membuka IntelliJ dari baris perintah, dan untuk beberapa alasan dibuka di folder induk. Jadi, alih-alih membuka di C:\dev\myProject, ia membuka C:\dev. Ini berarti ada folder konfigurasi IntelliJ yang dibuat C:\dev\.idea. Ketika saya menutup dan membuka lagi di lokasi yang tepat, sepertinya berhasil, tetapi saya tidak dapat menjalankan tes dengan andal dari IDE karena beberapa jalur di file .iml kacau. Solusinya adalah menghapus C:\dev\.idea, C:\dev\myProject\.idea, semua file *.iml, dan mulai lagi. - person pduncan; 19.05.2020