Saya mendapatkan kesalahan ini saat menjalankan tes JUnit di Eclipse:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
Saya sudah mencoba menambahkan JUnit
pustaka di classpath meskipun saya menggunakan maven, dan pustaka JUnit ada dalam dependensi POM.
Saya sudah mencoba membersihkan proyek dan membuat kasus uji JUnit baru menggunakan plugin JUnit untuk Eclipse, masih mendapatkan kesalahan yang sama.
mvn clean test
setelah itu akan mengkompilasi semua kelas pengujianJawaban:
Ini tampaknya terjadi karena hanya kode sumber yang dikompilasi saat Anda menggunakan
mvn clean compile
(saya menggunakan maven 3.1.0 jadi saya tidak yakin apakah selalu berperilaku seperti ini).Jika Anda menjalankan
mvn test
, kode pengujian juga akan dikompilasi, tetapi kemudian menjalankan pengujian (yang mungkin tidak langsung diinginkan jika Anda mencoba menjalankannya melalui Eclipse.) Cara mengatasinya adalah dengan menambahkantest-compile
urutan perintah Maven Anda setiap kali Anda melakukan amvn clean
. Misalnya, Anda akan larimvn clean compile test-compile
.sumber
Saya memiliki masalah serupa dengan pengujian saya dan menemukan suatu tempat di Web, bahwa Anda harus pergi ke Build Path di properti proyek Anda dan memindahkan Dependensi Maven di atas JRE System Library . Sepertinya itu berhasil untuk saya.
sumber
Saya menghadapi masalah yang sama dan saya dapat memperbaikinya menggunakan jawaban @ slomek tetapi masalah tersebut muncul kembali setelah itu.
Saya akhirnya memperbaikinya dengan menambahkan folder output proyek saya ke konfigurasi run pengujian JUnit. Langkah-langkahnya adalah:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
tabUser Entries
- meskipun proyek sudah disertakan di sanaAdvanced -> Add folder
untuk menambahkan folder keluaranMasalah ini mungkin disebabkan oleh pengaturan proyek yang aneh di Eclipse - misalnya folder sumber dengan proyek maven bersarang yang diimpor sebagai satu proyek / folder (setidaknya begitulah proyek saya disiapkan).
sumber
Jika masalah ini hanya terjadi di Eclipse, menjalankan perintah Proyek -> Bersihkan ... pada proyek yang dipilih dapat membantu.
sumber
Setelah mencoba semuanya di sini tanpa perbaikan, saya menyelesaikan masalah saya hanya dengan memulai ulang Eclipse
sumber
Saya memperbaiki masalah saya dengan menjalankan pembaruan maven. Klik kanan proyek proyek Anda> Maven> Perbarui Proyek
sumber
Dalam kasus saya, saya memiliki struktur direktori maven yang salah.
Yang seharusnya seperti:
/ src / test / java / com.myproject.server.MyTest
Setelah saya memperbaikinya - semuanya bekerja seperti pesona.
sumber
Dalam kasus saya, hanya langkah selanjutnya yang membantu saya menyelesaikan masalah ini:
sumber
Sebelumnya, dalam hal ini, saya selalu melakukan mvn
eclipse:eclipse
dan memulai ulang Eclipse saya dan berhasil. Setelah bermigrasi ke GIT, GIT berhenti bekerja untuk saya yang agak aneh.Masalah dasar di sini adalah Mr Eclipse tidak menemukan kelas yang dikompilasi. Kemudian, saya menetapkan folder output sebagai Project / target / test-class yang secara default dihasilkan oleh
mvn clean install
tanpa melewatkan pengujian dan melanjutkan dengan solusi berikut:Opsi 1: Setel jalur kelas untuk setiap kasus pengujian
Eclipse -> Run -> Run Configurations -> di bawah JUnit-> pilih mytest -> di bawah tab classpath-> Pilih User Entries-> Advanced-> Add Folder -> Select -> Apply-> Run
Opsi 2: Buat variabel classpath dan sertakan di classpath untuk semua kasus pengujian
Eclipse -> Windows -> Variabel Jalur Kelas -> Baru -> [Nama: Junit_test_cases_cp | path:] -> ok Lalu pergi ke Eclipse-> Run -> Run Configurations -> JUnit-> pilih mytest -> di bawah tab classpath -> Pilih User Entries-> Advanced-> Tambahkan variabel classpath-> Pilih Junit_test_cases_cp-> ok- > Terapkan-> Jalankan
Ini adalah satu-satunya hal yang saat ini berhasil untuk saya setelah mencoba semua saran secara online.
sumber
Saya memiliki masalah yang sama dengan proyek Gradle dengan pengujian SourceSet dengan dua direktori sumber daya.
Cuplikan ini berasal dari main-module.gradle dan menambahkan direktori sumber daya ke SourceSet pengujian:
Melakukan ini, saya memiliki dua direktori sumber daya yang terkait dengan tes SourceSet dari modul utama proyek:
../other-module/src/test/resources src / test / resources (relatif terhadap folder main-module, otomatis ditambahkan oleh plugin java)
Saya menemukan bahwa jika saya memiliki dua file dengan nama yang sama di kedua direktori sumber, ada yang tidak beres pada tahap sumber daya proses. Akibatnya, tidak ada kompilasi yang dimulai dan karena alasan ini tidak ada .class yang disalin di direktori bin, tempat JUnit mencari class tersebut. ClassNotFoundException menghilang hanya dengan mengganti nama salah satu dari dua file.
sumber
NoClassDefFoundError benar-benar berarti tidak dapat menginisiasi kelas. Ini tidak ada hubungannya dengan menemukan kelas. Saya mendapat kesalahan ini saat memanggil trim () pada String null.
JUnit tidak akan menampilkan NullPointerException. String tersebut tidak null saat berjalan normal karena saya mengambil string dari file properti yang tidak tersedia untuk pengujian.
Saran saya adalah untuk menghapus bagian dari kelas sampai tes Anda mulai lulus. Kemudian Anda dapat menentukan baris mana yang memberikan kesalahan.
sumber
Saya memiliki masalah yang sama dengan Eclipse Helios saya yang men-debug Junits. Masalah saya sedikit berbeda karena saya berhasil menjalankan Junits tetapi ketika saya mendapatkan ClassNotFoundException saat men-debug JUNIT yang sama.
Saya telah mencoba semua jenis solusi berbeda yang tersedia di Stackoverflow.com dan forum di tempat lain, tetapi tidak ada yang berhasil. Setelah membenturkan kepala saya dengan masalah ini selama hampir dua hari, akhirnya saya menemukan solusi untuk itu.
Jika tidak ada solusi yang berhasil, hapus saja folder .metadata yang dibuat di ruang kerja Anda. Ini akan menciptakan biaya tambahan untuk mengimpor proyek dan semua jenis konfigurasi yang telah Anda lakukan, tetapi ini pasti akan menyelesaikan masalah ini.
Semoga ini membantu.
sumber
Langkah-langkah ini berhasil untuk saya.
sumber
Gerhana 1- mvn: gerhana
2 - proyek bersihkan semua proyek
3- restart
sumber
Layak disebutkan sebagai jawaban lain bahwa jika Anda menggunakan eGit, dan jalur kelas Anda diperbarui karena katakanlah, alat cakupan pengujian seperti Clover, bahwa terkadang ada cegukan pembersihan yang tidak sepenuhnya menghapus konten
/path/to/git/repository/<project name>/bin/
Pada dasarnya, saya menggunakan Tampilan Log Kesalahan Eclipse, mengidentifikasi apa yang menyebabkan masalah selama upaya pembersihan ini, menavigasi ke direktori sumber, dan menghapus
<project name>/bin
direktori secara manual . Setelah itu selesai saya kembali ke Eclipse dan menyegarkan (F5
) proyek saya dan kesalahan itu hilang.sumber
Periksa apakah proyek Anda dibuka sebagai proyek Maven dan bukan hanya proyek Java biasa. Sebenarnya no-brainer, tapi itulah alasan yang persis sama mengapa Anda mungkin melewatkannya.
sumber
Bisa juga karena "[ERROR] Tidak ada kompiler yang disediakan di lingkungan ini. Mungkin Anda menjalankan JRE daripada JDK?"
sumber
Saya pernah menghadapi masalah yang sama. Saya menyelesaikannya dengan menghapus ketergantungan jar JUnit eksternal yang saya tambahkan dengan mengunduh dari internet secara eksternal. Tapi kemudian saya pergi ke project-> properties-> build path-> add library-> junit-> memilih versinya (ex junit4) -> apply.
Ini secara otomatis menambahkan ketergantungan. itu memecahkan masalah saya.
sumber
Membuat beberapa perubahan palsu dan menyimpan kelas pengujian dapat menyelesaikan masalah. Ini akan membangun .class secara otomatis
sumber
Sepertinya masalah kompilasi. Jalankan proyek sebagai pengujian Maven, lalu Jalankan sebagai Uji JUnit.
sumber
Untuk proyek yang tidak menggunakan maven: Ini berhasil untuk saya https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Menambahkan jre dan project src di bagian bawah Order dan mengekspor di jalur build
sumber
Tolong periksa apakah Anda telah menambahkan junit4 sebagai dependensi.
misalnya
sumber
Mungkin Anda lupa menempatkan kelas Utama dan kelas Kasus Uji di / src / test / java. Periksa Sekali.
sumber