Eclipse Tidak ada pengujian yang ditemukan menggunakan JUnit 5 yang disebabkan oleh NoClassDefFoundError untuk LauncherFactory


95

Masalah

Setiap kali saya menjalankan tes JUnit proyek saya (menggunakan JUnit 5 dengan Java 9 dan Eclipse Oxygen 1.a) Saya mengalami masalah karena gerhana tidak dapat menemukan tes apa pun.

Deskripsi

Di bawah konfigurasi run, eclipse bahkan tidak dapat menemukan metode yang dianotasi dengan @Test, tetapi hanya menampilkan " (semua metode) " kepada saya. Gambar berikut semoga memberikan gambaran yang lebih baik tentang pengaturan saya:

https://imgur.com/a/FTe9c

Keluaran konsol:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

Apa yang saya coba sejauh ini

Saya sudah mencoba

  • untuk menghapus folder uji dari jalur build dan menambahkannya lagi.
  • untuk memulai pengujian dengan mengarahkan kursor ke metode yang dianotasi dengan @Test lalu klik "Run as JUnit Test".
  • hapus JUnit dari Buildpath dan tambahkan lagi
  • mulai ulang gerhana
  • Saya juga telah memindahkan keseluruhan proyek dari satu mesin ke mesin lain dan mencobanya dengan instalasi gerhana yang disediakan di sana
  • untuk mengganti nama metode pengujian.
  • untuk mengetik ulang anotasi @Test

Beberapa dari langkah-langkah ini dapat ditemukan di sini , tetapi pada akhirnya masalahnya tetap ada.


Tetapi apakah Anda mencoba mencari perbedaan seperti yang dinyatakan dalam jawaban ini - stackoverflow.com/questions/34413/… ?
Naman

Jawaban:


20

Anda mengalami bug Eclipse 525948 yang telah diperbaiki dan akan diterbitkan dalam rilis mendatang Oxygen.3 (4.7.3), 21 Maret 2018.

Sebagai solusinya, letakkan kode pengujian Anda di project terpisah dan tambahkan project yang sedang diuji ke modulepath, tetapi jangan tambahkan a module-info.javake project pengujian Anda. Dengan penamaan proyek, kelas dan modul Anda, seharusnya terlihat seperti ini:

masukkan deskripsi gambar di sini

Lihat juga video saya yang menunjukkan Java 9 dan JUnit 5 di Eclipse Oxygen.1a beraksi


1
@nullpointer maksud saya membuat proyek Java baru yang tidak modular (sudah tidak ada module-info.java). Dalam Eclipse, sebuah proyek Java memiliki satu folder output dan karenanya hanya dapat berisi satu atau tidak sama sekali module-info.java. Tetapi Anda dapat menambahkan modul ke modulepath proyek meskipun proyek tersebut tidak modular (tidak memiliki module-info.java).
melolong

1
@ShadowDragon kelemahan dengan peretasan ini adalah kita memerlukan nama paket yang berbeda untuk kelas pengujian, sehingga tidak dapat melakukan pengujian paket-pribadi
kleopatra

7
Saya baru saja menginstal Oxygen.3 (4.7.3) dan masalah tetap ada.
pengguna118967

2
@chomp Jika Anda memiliki 2018-09, itu masalah yang berbeda meskipun gejalanya terlihat serupa. Jika tidak ada pengujian yang ditemukan, hal ini sebagian besar disebabkan oleh jalur classpath / modul yang salah ( Project> Properties: Java Build Path ).
Howlger

2
@howlger Terima kasih. Setelah meningkatkan ke versi terbaru, masalah ini hilang. Sekali lagi terima kasih atas bantuan Anda :).
Datta

122

Saya memperbaiki masalah ini dengan mengklik kanan tes dan memilih 'Run Configurations' dan mengubah pilihan "Test runner:" menjadi 'JUnit 4' seperti yang ditunjukkan di sini:

Tangkapan layar dari konfigurasi yang dijalankan

Saya menjalankan tes lagi dan berhasil.


12
Lucu bahwa memilih "JUnit4" dalam konfigurasi yang dijalankan saat menggunakan JUnit5. Saya tidak akan menyebut itu sebagai solusi yang baik yang dapat saya andalkan saat saya menangani proyek besar.
Levent Divilioglu

1
Saya juga menemukan solusi ini mencurigakan, bahkan tidak ada penjelasan mengapa ini berhasil dan risiko apa yang mungkin diambil.
Amadán

Jika melakukan ini tidak menyelesaikan masalah untuk Anda, buka tab classpath di jendela yang sama dan tambahkan JUnit ke Bootstrap Libraries.
Abhi

Terima kasih; memilih JUnit 4 menyelesaikan masalah saya. Untuk saat ini, ini adalah cara termudah untuk menyelesaikan masalah tersebut.
Tes

Menurut pendapat saya, solusi yang kurang invasif ini, yaitu tanpa mengubah kode sumber.
Rafael Rocha

63

Saya memiliki masalah yang sama dengan STS 3.9.1. Sepertinya ada bug Eclipse, namun untuk memperbaikinya, Anda dapat menambahkan dependensi uji junit-platform-launcherke proyek Anda ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Inilah yang saya lakukan untuk proyek saya yang menggunakan gradle:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

file gradle.properties:

junit5MinorVersion=1.0

Saya yakin hal yang sama berlaku jika Anda melihat pengecualian ini saat menggunakan IntelliJ IDEA.


1
Jika menggunakan gradle biasanya masuk ke build.gradle. Jika Anda menggunakan maven itu pom.xml. Format untuk maven berbeda.
Andrii Karaivanskyi

1
Itu memperbaikinya untuk saya. Terima kasih!
Chris

4
Berikut cuplikan pom.xml untuk masuk ke dalam <dependencies>: <dependency> <groupId> org.junit.jupiter </groupId> <artifactId> junit-jupiter-engine </artifactId> <version> 5.1.0 </version> <scope> test </scope> </dependency> <dependency> <groupId> org.junit.platform </groupId> <artifactId> junit-platform-launcher </artifactId> <version> 1.1.0 </version> < cakupan> uji </scope> </dependency>
pengguna118967

1
Masih menambahkan junit-platform 1.1.0 tidak berhasil untuk saya. Ini menunjukkan pesan yang sama "Tidak ada pengujian yang ditemukan dengan pelari pengujian menggunakan JUnit 5" "
P Satish Patro

2
@PSatishPro Setelah menambahkan di atas. Anda harus menjalankan konfigurasi untuk kasus uji Junit tersebut dan kemudian pergi ke tab Classpath-> Advanced-> Add Library-> OK-> Junit-> Selesai. Kemudian lanjutkan dan Jalankan Ini akan menambah perpustakaan selama pelaksanaan Junit
Jaison Varghese

27

Dalam kasus saya, masalahnya adalah diri saya sendiri dan tidak ada IDE seperti Eclipse. Saya telah mengimpor kelas JUnit 4 Test.

Jadi JANGAN impor yang ini:

import org.junit.Test  // JUnit 4

Tapi, impor yang itu:

import org.junit.jupiter.api.Test // JUnit 5

Saya beralih antara JUnit 4 dan 5 karena proyek saat ini menggunakan JUnit 5, tetapi ketika melaporkan bug ke Hibernate, dll. Saya perlu beralih ke JUnit 4. Saya akhirnya tidak sengaja mencampur impor. 🤦‍♂️
Kawu

20

Jawaban sejauh ini tidak mengatasi masalah berbagi kode dengan orang lain yang belum tentu menggunakan Eclipse. Inilah satu proposisi. Kuncinya adalah menggunakan profil maven untuk memecahkan Eclipse Case.

Ini mengasumsikan Anda telah menentukan properti junit5.versiondi pom Anda seperti:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

lalu di profilesbagian tambahkan yang berikut ini:

<profiles>
    <profile>
        <id>eclipse</id>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit5.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                    <version>1.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </profile>
</profiles>

Yang harus Anda lakukan setelah ini adalah memilih profil di Eclipse lokal Anda: Klik kanan pada proyek Anda dan pilih Maven > Select Maven Profiles...(atau tekan Ctrl+ Alt+ P), lalu periksa profil "gerhana" yang baru saja kita buat.

Pemilihan Profil Maven

Dengan itu Anda sudah selesai. Eclipse Anda akan menjalankan pengujian Junit 5 seperti yang diharapkan, tetapi konfigurasi yang Anda tambahkan tidak akan mencemari build lain atau IDE lain


12

Menambahkan ketergantungan maven ini dengan JUnit Jupiter (v.5.5.1) memecahkan masalah.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>

Saya memiliki proyek JAR yang dibuat untuk Spring Boot 2.x yang membawa JUnit 5. Saya menambahkan ketergantungan ini dan tampaknya telah memperbaikinya. Terima kasih!
David Bradley

12

PERBAIKAN SEDERHANA: (Tambahkan JUnit 5 Library)

PETUNJUK:

  • Klik kanan pada proyek -> Build Path -> Configure Build Path
  • Di pop-up -> Tambahkan Perpustakaan -> JUnit -> JUnit 5 -> Selesai -> Terapkan
  • Anda akan melihat JUnit 5 Library (dan toplesnya) ditambahkan ke proyek Anda
  • Klik kanan pada proyek -> Maven -> Perbarui Proyek -> OK

9

Tidak ada solusi yang membantu:

Masalahnya adalah Eclipse 2018-12 memiliki dukungan untuk JUnit 5.3.1. Jika Anda memulainya dengan versi sebelumnya, itu akan gagal.

Jadi pastikan Anda menggunakan setidaknya 5.3.1.

5.4.0 juga berfungsi.

Jika pom induk Anda adalah Spring Boot, Anda perlu memastikan (dalam manajemen ketergantungan) bahwa junit-jupiter-api disetel ke versi yang sama. Anda tidak perlu junit-platform-runner atau -launcher !


2
Terima kasih atas tipnya. Saya menggunakan 2019-3 dan saya menambahkan properti <junit-jupiter.version>5.4.1</junit-jupiter.version>untuk mengganti versi yang digunakan dalam boot Musim Semi (2.1.3.RELEASE).
Ritesh

3
Ini adalah salah satu yang memperbaikinya untuk saya. Saya menghapus ketergantungan -launcher dan itu mulai bekerja. (gerhana 2019-09 dan junit 5.4.2)
Raymond

Solusi ini bekerja untuk saya juga. Namun, dalam kasus saya, saya mengubah dari 5.3.1 menjadi 5.5.1 dan junit-platform-engine menjadi 1.5.1.
Arwan Khoiruddin

1
Ini memperbaikinya untuk saya. Dalam gerhana 2020-03 tes tidak dimulai dengan versi junit 5.5.2 tetapi dengan 5.6.0. Sebagai pembaruan umum untuk jawaban Anda: Mungkin perlu menggunakan setidaknya gerhana versi junit.
Lars Briem

8

Berikut jawaban Andrii Karaivanskyi berikut deklarasi POM Maven:

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

MEMPERBARUI

Sesuai komentar oleh Alexander Wessel Anda dapat menggunakan org.junit: junit-bom seperti yang dijelaskan dalam jawabannya atas pertanyaan Eclipse Tidak ada tes yang ditemukan menggunakan JUnit 5 yang disebabkan oleh NoClassDefFoundError untuk LauncherFactory .


1
Jangan mendeklarasikan properti untuk jupiter dan versi platform, gunakan BOM sebagai gantinya . Pada dasarnya tambahkan dependensi pada BOM di tag dependencyManagement dengan scope=import type=pom, lalu tambahkan dependensi ke junit-platform-launcher dan junit-jupiter-engine dalam cakupan pengujian, tanpa memberikan versi di bagian dependensi. BOM akan selalu memastikan bahwa Anda hanya memiliki satu versi Platform JUnit dan Jupiter di classpath, dan versi masing-masing adalah versi yang diinginkan (misalnya 5.2.0 dengan 1.2.0).
Alexander Wessel

@AlexanderWessel Saya tidak punya BOM. Ini hanyalah sebuah contoh kutipan yang dependensi yang harus dideklarasikan dengan Maven, dimanapun ini berada.
Gerold Broser

1
bukan apakah Anda memiliki (atau lebih tepatnya proyek Anda memiliki) BOM itu sendiri. Saya menjelaskan bahwa dengan mengimpor BOM yang disediakan JUnit 5 , Anda dapat memastikan versi Junit Jupiter dan Junit Platform kompatibel, dan Anda tidak perlu mendeklarasikan versi di dependensi individual, sehingga juga tidak perlu lagi mendeklarasikan versinya properti. Untuk memperjelas: Teladan Anda berfungsi dengan baik. Tetapi mengimpor JUnit BOM sedikit lebih elegan (menurut pendapat saya) dan, dalam beberapa keadaan, lebih aman.
Alexander Wessel


7

FYI, penyebab lain dari "Tidak ada pengujian yang ditemukan menggunakan junit5" adalah (secara tidak sengaja atau sengaja) mendeklarasikan kasus pengujian "pribadi":

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

Mereka harus terbuka untuk umum.


5

Saya juga menghadapi masalah yang sama Anda hanya perlu menambahkan perpustakaan, Perpustakaan Junit sudah disediakan bersama dengan Eclipse jadi Anda hanya perlu mengikuti di bawah ini

Build Path> Configure Build Path> library> Add library> JUnit> Next> finish

Ini bekerja untuk saya


Ini bekerja dengan baik di gerhana. Versi: 2020-06 (4.16.0) Build id: 20200615-1200
OJVM

4

Dari awal pesan kesalahan memberitahu Anda bahwa kelas tidak ditemukan: NoClassDefFoundError itu berarti PATH ke junit adalah masalahnya.

  1. Tekan klik kanan ke folder proyek dan pilih Properties ATAU pilih folder proyek dan tekan kombinasi cmd + i.

  2. pilih dari daftar "Java Build Path".

  3. pilih tab "Perpustakaan"
  4. Jika JUnit 5 (atau JUnit 4) ditambahkan ke "Modulepath", pilih "JUnit 5" dan tekan Hapus.
  5. pilih "Classpath", tekan "Add Library ...".
  6. dari jendela "Add Library" yang terbuka, pilih JUnit, tekan berikutnya.
  7. Pilih versi perpustakaan JUnit yang Anda perlukan dan tekan Selesai.

Itu semuanya. Coba jalankan pengujian lagi.


4

Anda harus tahu bahwa:

@Before dari junit4 menggunakan @Test : " import org.junit.Test "

DAN

@BeforeEach dari Junit5 cocok dengan: " import org.junit.jupiter.api.Test "

jadi pastikan Anda menggunakan impor dari versi yang sama dari Junit, jika tidak maka saya rasa tidak akan berhasil.


3

Menggunakan STS 3.9.1 Saya mendapat masalah yang sama. Namun, saat ini saya tidak memerlukan fitur JUnit5 baru, jadi saya mencoba memaksa menggunakan versi yang lebih lama. Jika menggunakan maven, Anda dapat menambahkan dependensi berikut ke pom.xml Anda:

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>${junit.vintage.version}</version>
    <scope>test</scope>
</dependency>

Ini melakukan trik untuk saya (setidaknya selama saya tidak membutuhkan JUnit5 secara eksplisit).


Mengapa Anda menambahkan "org.junit.vintage" jika Anda menggunakan JUnit5? Ini hanya untuk kompatibilitas ke belakang (seperti menggunakan JUnit lama) AFAIK.
Levent Divilioglu

Karena dengan proyek itu dan STS 3.9.1 saya tidak dapat / tidak menggunakan JUnit5 tetapi JUnit4.
mahe

3

Saya mendapat masalah yang sama setelah membuat TestCase baru: Eclipse -> New -> JUnit Test Case. Ini membuat kelas tanpa pengubah tingkat akses. Saya bisa memecahkan masalah hanya dengan meletakkan publik sebelum kata kunci kelas .


Kelas dan metode membutuhkan kata kunci publik. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi

3

Seperti yang diinformasikan semua orang itu bug IDE, saya mencoba Eclipsedan STS. Dalam kedua kasus tersebut, itu gagal.

Sebagai solusinya, saya telah memperbaikinya dengan memodifikasi file pom.xml seperti di bawah ini.

Saya telah menambahkan dua dependensi maven ini junit-jupiter-enginedanjunit-platform-launcher .

pom.xml

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Pastikan juga untuk menambahkan versi kedua dependensi maven di tag properti.

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>

1
Menambahkan ketergantungan junit-platform-launcher memecahkan masalah bagi saya. Terima kasih
Venkatesh Manohar

3

Saya menggunakan eclipse 2019-09.

Saya harus memperbarui versi junit-bom setidaknya menjadi 5.4.0. Saya sebelumnya memiliki 5.3.1 dan itu menyebabkan gejala OP yang sama.

Konfigurasi saya sekarang:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

opsi lain adalah menambahkan <junit-jupiter.version> 5.4.0 </junit-jupiter.version> ke properti pom
Uri Loya

2

Karena tidak mungkin mengirim blok kode ke dalam komentar, inilah template POM yang saya gunakan dalam proyek yang membutuhkan JUnit 5. Ini memungkinkan untuk membangun dan "Jalankan sebagai Uji JUnit" di Eclipse dan membangun proyek dengan Maven biasa.

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

Anda dapat melihat bahwa sekarang Anda hanya perlu memperbarui versi di satu tempat jika Anda ingin memperbarui JUnit. Juga nomor versi platform tidak perlu muncul (dalam versi yang kompatibel) dimanapun di POM Anda, itu secara otomatis dikelola melalui junit-bomimpor.


2

Saya menggunakan:

Spring Tool Suite 4 Versi: 4.4.2. RELEASE Build Id: 201911201053 Versi Java: 1.8.0_191

dan pesan yang ditampilkan adalah Tidak ada pengujian yang ditemukan dengan runner pengujian 'JUnit5'

yang berhasil bagi saya adalah konfigurasi di bawah ini

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>

2

Anda kehilangan peluncur platform JUnit 5 dengan grup: 'org.junit.platform', nama: 'junit-platform-launcher'

Cukup tambahkan di POM Anda:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>

1

Kesalahan yang sama yang saya hadapi dalam versi gerhana Oxygen.3a Release (4.7.3a). Ada masalah dalam ketidakcocokan Dependensi Maven. Untuk mengatasinya, saya telah memperbarui Pom.xml saya dengan ketergantungan berikut.

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>


Pernahkah Anda melihat Panduan Pengguna JUnit 5 tentang junit-platform-runner: " Pelari untuk menjalankan pengujian dan rangkaian pengujian pada Platform JUnit di lingkungan JUnit 4. "
Gerold Broser

1

Anda dapat menggunakan hanya junit-jupitersebagai ketergantungan tes bukan junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>

1
Solusi ini bekerja untuk saya dengan JUnit 5.6.2, Java 11 (dan gerhana 2020-03 / 4.15.0)
coseos

1

Bagi saya, saya mengonfigurasi jalur build untuk menambahkan JUnit 5 Library dan juga dengan menambahkan dependensi

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

secara terpisah.


1

Saya menghadapi masalah ini dengan Eclipse (Versi: 2019-12 (4.14.0)) juga. Solusinya tampaknya menggunakan IntelliJ atau menggunakan pengujian Maven untuk menjalankan pengujian semacam itu di Eclipse.


1

Saya sebenarnya menggunakan spring-tool-suite-4-4.5.1 dan saya mengalami bug ini ketika saya ingin menjalankan kelas pengujian. dan solusinya adalah dengan menambahkan 'java build path', 'junit5' di Library java build path img


0

kamu harus berubah

@Test
public static void testmethod(){}

untuk

@Test
public void testmethod(){}

@Test adalah metode statis yang tidak mendukung


0

Saya mengalami kesalahan yang sama, dan dalam kasus saya itu adalah masalah sederhana untuk pergi Project Properties > Maven > Update projectdan / atau membersihkan dan membangun kembali proyek.


0

Baru saja menambahkan Test.class saya melalui menu eclipse dan berfungsi. Klik kanan untuk memproyeksikan -> New -> Other -> JUnit -> JUnit Test Case


0

Ini mungkin disebabkan oleh versi junit-platform-launcher / junit-platform-runner.

1.1.0 tidak berfungsi

1.4.1 berfungsi di pengaturan saya.

Saya pikir ini adalah bug di eclipse karena bekerja dengan perpustakaan versi junit yang lebih tinggi dan bukan versi lain.

Ini menyelesaikan masalah saya. Resolusi lain tampak kurang layak atau berisiko bagi saya. Terima kasih.


0

Ketika saya mengubah versi jupiter api saya menjadi yang terbaru, itu terpecahkan. Sementara itu, ide eclipse saya dan ekstensi eclipse lainnya (seperti STS) mendapatkan build path error. Untuk setiap pembaruan maven, ide memaksa saya untuk mengatur Perpustakaan Sistem JRE.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.