Ketika saya mencoba menjalankan tes berikut di IntelliJ IDEA saya mendapatkan pesan:
"!!! JUnit versi 3.8 atau yang lebih baru diharapkan:"
Perlu dicatat bahwa ini adalah proyek Android yang saya kerjakan di IntelliJ IDEA 9.
public class GameScoreUtilTest {
@Test
public void testCalculateResults() throws Exception {
final Game game = new Game();
final Player player1 = new Player();
{
final PlayedHole playedHole = new PlayedHole();
playedHole.setScore(1);
game.getHoleScoreMap().put(player1, playedHole);
}
{
final PlayedHole playedHole = new PlayedHole();
playedHole.setScore(3);
game.getHoleScoreMap().put(player1, playedHole);
}
final GameResults gameResults = GameScoreUtil.calculateResults(game);
assertEquals(4, gameResults.getScore());
}
}
Jejak tumpukan penuh terlihat seperti ini ...
!!! JUnit version 3.8 or later expected:
java.lang.RuntimeException: Stub!
at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
at junit.textui.TestRunner.<init>(TestRunner.java:54)
at junit.textui.TestRunner.<init>(TestRunner.java:48)
at junit.textui.TestRunner.<init>(TestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:152)
at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:136)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
Process finished with exit code -3
java
android
junit
intellij-idea
benstpierre
sumber
sumber
Jawaban:
Masalah ini terjadi karena Android Platform (
android.jar
) sudah mengandung kelas JUnit. Pelari uji IDEA memuat kelas-kelas ini dan melihat bahwa mereka berasal dari JUnit lama, saat Anda mencoba menggunakan tes beranotasi yang merupakan fitur JUnit baru, oleh karena itu Anda mendapatkan kesalahan dari pelari uji.Solusinya sederhana, buka
Project Structure
|Modules
|Dependencies
, dan pindahkan kejunit-4.7.jar
atas, sehingga muncul sebelumnyaAndroid 1.6 Platform
di classpath. Sekarang pelari tes akan senang karena memuat versi JUnit baru.sumber
Class not found: "com.example.intellijgradletest.MainActivityTest"
modul saya adalah modul perpustakaan java, jadi mengubah JRE ke 1.8 java menyelesaikan masalah.
Atau, Anda juga dapat melakukannya secara global melalui Pengaturan Modul> Lokasi SDK> JDK, menentukan JDK 8 Oracle alih-alih salinan Android SDK.
sumber
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
atauC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
di Windows. Temukan node<name value="Android API 28 Platform" />
dan atur<annotationsPath>
ke<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. Juga memastikan<classPath>
simpul berisiplatforms/android-28/...
di kedua URL jalur file. Sesuaikan "Android-SDK" ke nama folder Anda.Saya punya masalah dengan proyek multi-modul (libgdx). Satu modul adalah Java murni dan memiliki tes. Solusi saya adalah mengatur "gunakan JRE alternatif" menjadi "Java 1.8" dalam menjalankan konfigurasi tes unit saya. Ini memastikan tidak ada android.jar ada di classpath dan pelari junit 4.x digunakan.
sumber
Saya mendapat kesalahan yang sama saat membuat keduanya
Unit Test
danAndroid Instrument Test
di Android Studio 1.4+ dan itu mulai membingungkan. Untuk menghindari kesalahan ini pastikan kelas tes Anda beradaAndroid Tests
di bawahRun/Debug Configurations
Test Artifact
dalamBuild Variants
diatur keAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
bukannyaJUnit
JUnit
cukup hapus konfigurasi dan klik kanan pada file yang ingin Anda uji danRun
lagi. Ini kemudian akan membuat bagian konfigurasi di bawahAndroid Tests
dan berjalan pada perangkat / emulator.sumber
test
folder keandroidTest
folder. Android Studio tidak memperbarui konfigurasi jalankan setelah melakukan iniUntuk Android Studio - mulai dari Android Studio 1.1 Beta 4 , Google telah menambahkan dukungan untuk plugin Android Gradle 1.1.0-RC . Plugin baru mendukung Unit Testing melalui Android Studio menggunakan junit 4+.
Ini masih eksperimental dan ada beberapa langkah manual untuk mengatur ini.
sumber
Untuk semua orang yang membaca posting ini dan masih memiliki masalah yang sama dengan AndroidStudio 1.0. Anda tidak dapat mengubah urutan ketergantungan di AndroidStudio jika IDE menulis ulang secara otomatis. Dan, bahkan jika Anda berhasil mengubah urutan dengan memodifikasi file .iml, Anda akan mendapatkan "kelas tidak ditemukan ...". Ini karena jalur keluaran Tes tidak dapat ditetapkan pada AndroidStudio.
Sebenarnya, ada solusi untuk membuat AndroidStudio, Junit dan Robolectric bekerja bersama. Lihatlah https://github.com/JCAndKSolutions/android-unit-test ini dan gunakan plugin ini juga: https://github.com/evant/android-studio-unit-test-plugin
Berfungsi sempurna untuk saya.
sumber
Saya mendapatkan kesalahan yang sama ketika saya membuat paket junit saya sendiri
Untuk memperbaikinya, saya telah menambahkan dua baris ini di file gradle aplikasi saya seperti yang dijelaskan di sini :
sumber
Ada dua hal yang bisa saya bayangkan terjadi
sumber
Ini juga terjadi pada saya di Android Studio 1.1 - meskipun harus mendukung pengujian unit tanpa plugin.
Di komputer lain (proyek yang sama, versi AS yang sama) saya menemukan bahwa ketika menjalankan tes unit, IDE tidak menambahkan file android.jar ke classpath, sedangkan di komputer saya melakukannya.
Tebakan terbaik saya adalah karena konversi yang kami lakukan dari Maven ke Gradle dan pindah dari intellij ke AS, beberapa cache pengaturan tetap berada di suatu tempat di mesin saya yang menyebabkan android.jar ditambahkan ke classpath.
Apa yang saya lakukan adalah menghapus semua cache terkait Android dari mesin saya (di bawah folder c: \ users \ USRE_NAME): .android .AndroidStudio .gradle .m2
Setelah itu saya membuka kembali proyek dan tes berhasil.
Masih mencoba memahami apa yang salah, tetapi ini harus melakukan trik untuk saat ini.
sumber
Saya mengalami masalah ini di Android Studio 1.5, karena saya tidak tahu bahwa saya harus mengganti pengaturan "Artefak Uji" di "Bangun Varian" (sudut kiri bawah jendela utama) dari "Tes Instrumentasi Android" ke "Tes Unit" ". Ketika Anda melakukannya, Anda dapat melihat file ExampleUnitTest.java di jendela Project.
sumber
Saya memiliki masalah yang sama tetapi karena alasan lain. Saya menggunakan IntelliJ dengan proyek java gradle biasa (bukan android) tetapi JDK diatur ke Android SDK di
Project Structure
(adalah JDK default karena beberapa alasan). Ini benar-benar bodoh tetapi IntelliJ tidak cukup baik untuk menunjukkan kepada saya apa yang salah, jadi saya terjebak pada hal itu.sumber
Inilah cara saya menyelesaikannya:
Edit Konfigurasi -> Default -> Android JUnit -> Tambahkan yang berikut ini ke Direktori Kerja:
$ MODULE_DIR $
sumber
Bagi saya masalah ini disebabkan oleh konfigurasi run yang ketinggalan zaman / rusak untuk tes. Saya hanya perlu menghapus konfigurasi, kemudian membuat yang baru dan masalahnya telah diperbaiki.
sumber
Dalam proyek Android yang saya miliki
minifyEnabled = true
, setelah saya mengubahnya untukfalse
semuanya berfungsi.sumber
Jika Anda menghapus
dari Anda
build.gradle
itu akan berhasilsumber
Pergi ke Struktur Proyek -> Pengaturan Platform, ubah SDK menjadi 1,8 untuk menyelesaikan masalah saya.
sumber
Saya juga menghadapi masalah yang sama, setelah berubah menjadi build.gradle bekerja dengan baik untuk saya.
ubah versi junit Anda di dalam build.gradle ke:
sumber
Saya mengikuti jawaban CrazyCoder tetapi tidak ada file junit yang ditampilkan dalam dependensi. jadi saya unduh satu dari http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm , lalu menambahkannya dengan menekan tombol tambah di sebelah kanan. Dan itu berhasil
sumber
Mematikan "Gunakan embedded JDK" di Struktur Proyek / Lokasi SDK adalah apa yang membantu dalam kasus saya, tetapi saya tidak tahu persis apa alasan itu gagal di tempat pertama.
sumber
Ganti folder android.jar Anda di libs dengan yang terbaru. Anda dapat mengunduhnya dari sini
sumber
Di AndroidStudio,,
Open Project Structure -> SDK Location
Anda dapat melihatJDK
lokasi, mengubah penggunaan "Gunakan tertanam JDK" untuk Anda milikiJDK
untuk diterapkan, lalu ubah kembali ke "Gunakan tertanam JDK" , itu mungkin bekerjasumber
Dalam kasus saya, perubahan
JRE
dalamRun Configurations
dosis memecahkan masalah, tetapi ketika saya klik tombol run di sebelah fungsi pengujian,JRE
pilihan akan reset ke default.Akhirnya, mirip dengan jawaban @CrazyLiu, di
Project Structure - SDK Location - JDK
, pilihEmbedded JDK
. Karena tidak ada kotak centang di Android Studio 3.6.sumber
Saya mendapatkan pesan yang sama
oleh kesalahan pemula yang sederhana. Saya telah menggunakan nama paket dan nama kelas yang sama pada src / main dan src / test untuk sebuah kelas (kelas HomeController dalam kasus saya):
Dengan itu, kelas HomeController src / utama, serta kelas HomeController src / test, memiliki jalur lengkap yang sama:
Hasilnya: semua tes yang bergantung pada kelas HomeController telah gagal.
Baik mengubah nama paket dan / atau nama kelas telah menyelesaikan masalah. Di sini contohnya, ketika keduanya, nama paket dan nama kelas diubah:
Sekarang nama kelas yang sepenuhnya memenuhi syarat berbeda. Nama kelas src / HomeController utama adalah:
dan nama kelas src / test HomeHontrollerTest adalah:
Dengan nama-nama kelas yang sepenuhnya memenuhi syarat menjadi unik, masalahnya hilang.
sumber