Eclipse NoClassDefFoundError for LauncherFactory nedeniyle JUnit 5 kullanılarak test bulunamadı


95

Sorun

Projelerimi JUnit testini her çalıştırdığımda (Java 9 ve Eclipse Oxygen 1.a ile JUnit 5 kullanarak) Eclipse'in herhangi bir test bulamaması sorunuyla karşılaşıyorum.

Tanım

Çalıştırma yapılandırması altında, eclipse @Test ile açıklama eklenen yöntemi bile bulamıyor, bunun yerine yalnızca " (tüm yöntemler) " gösteriyor. Aşağıdaki resim umarım kurulumuma daha iyi bir fikir verir:

https://imgur.com/a/FTe9c

Konsol çıkışı:

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

Şimdiye kadar ne denedim

Zaten denedim

  • test klasörünü yapı yolundan kaldırmak ve yeniden eklemek için.
  • @Test ile açıklanmış yöntemin üzerine gelerek testi başlatmak için "JUnit Test Olarak Çalıştır" ı tıklayın.
  • JUnit'i Buildpath'den kaldırın ve tekrar ekleyin
  • tutulmayı yeniden başlat
  • Ayrıca tüm projeyi bir makineden başka bir makineye taşıdım ve orada sağlanan tutulma kurulumuyla denedim
  • test yöntemini yeniden adlandırmak için.
  • @Test ek açıklamasını yeniden yazmak için

Bu adımlardan bazıları burada bulunabilir , ancak sonunda sorun devam etti.


Ancak, bunun cevabında belirtildiği gibi farkı bulmaya çalıştınız mı - stackoverflow.com/questions/34413/… ?
Naman

Yanıtlar:


20

Sen koştu Eclipse hata 525948 zaten çözülmüş durumda hangi Gelecek sürümde Oxygen.3 (4.7.3), 21 Mart 2018 yılında yayınlanacak olan.

Geçici bir çözüm olarak, test kodunuzu ayrı bir projeye koyun ve test edilen projeyi modül yoluna ekleyin, ancak module-info.javatest projenize bir eklemeyin . Projeniz, sınıfınız ve modül adınız ile aşağıdaki gibi görünmelidir:

görüntü açıklamasını buraya girin

Ayrıca bkz videomu o gösterileri eylem Eclipse Oxygen.1a Java 9 ve JUnit 5


1
@nullpointer Modüler olmayan (içermeyen) yeni bir Java projesi oluşturmayı kastediyorum module-info.java. Eclipse'de bir Java projesi tek bir çıktı klasörüne sahiptir ve bu nedenle yalnızca birini içerebilir veya hiçbirini içeremez module-info.java. Ancak proje modüler olmasa bile (yok module-info.java) projenin modül yoluna modüller ekleyebilirsiniz .
howlger

1
Bu saldırı ile dezavantajı @ShadowDragon biz böylece paket-özel test yapamaz test sınıfları için farklı bir paket adı gerektiğidir
kleopatra

7
Oxygen'i yeni kurdum (4.7.3) ve sorun devam ediyor.
user118967

2
@chomp 2018-09'unuz varsa, belirtiler benzer görünse bile bu farklı bir konudur. Test bulunmadıysa, bunun nedeni çoğunlukla yanlış bir sınıf yolu / modül yoludur ( Proje> Özellikler: Java Derleme Yolu ).
howlger

2
@howlger Teşekkürler. En son sürüme yükselttikten sonra bu sorun gitti. Yardımın için tekrar teşekkürler :).
Datta

123

Testi sağ tıklayıp "Yapılandırmaları Çalıştır" ı seçerek ve "Test çalıştırıcısı:" seçimini burada gösterildiği gibi "JUnit 4" olarak değiştirerek sorunu çözdüm:

Çalıştırma yapılandırmalarının ekran görüntüsü

Testi tekrar yaptım ve işe yaradı.


12
JUnit5 kullanırken çalıştırma yapılandırmalarında "JUnit4" seçilmesi komik. Büyük bir projeyle uğraşırken buna güvenebileceğim iyi bir çözüm demeyeceğim.
Levent Divilioğlu

1
Ayrıca bu çözümü şüpheli buluyorum, bunun neden işe yaradığına ve birinin ne gibi riskler alabileceğine dair bir açıklaması bile yok.
Amadán

Bunu yapmak sorunu sizin için çözmediyse, aynı penceredeki sınıf yolu sekmesine gidin ve JUnit'i Bootstrap Kitaplıklarına ekleyin.
Abhi

Teşekkürler; JUnit 4'ü seçmek sorunlarımı çözdü. Şimdilik, sorunu çözmenin en basit yolu bu.
Tes

Bence bu daha az müdahaleci çözüm, yani kaynak kodunu değiştirmeden.
Rafael Rocha

63

STS 3.9.1 ile aynı sorunu yaşıyorum. Bir Eclipse hatası gibi görünüyor, ancak bunu düzeltmek junit-platform-launcheriçin projenize bir test bağımlılığı ekleyebilirsiniz ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Gradle kullanan projem için böyle yaptım:

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}"
}

gradle.properties dosyası:

junit5MinorVersion=1.0

IntelliJ IDEA'yı kullanırken bu istisnayı görürseniz aynı şeyin geçerli olduğuna inanıyorum.


1
Gradle kullanıyorsanız, genellikle gider build.gradle. Eğer maven kullanıyorsanız, o pom.xml. Maven için format farklı olsa da.
Andrii Karaivanskyi

1
Bu benim için sorunumu çözdü. Teşekkürler!
Chris

4
İşte <dependencies> içine girilecek pom.xml snippet'i: <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> < kapsam> test </scope> </dependency>
user118967

1
Yine de junit-platform 1.1.0 eklemek benim için işe yaramadı. Aynı mesajı gösterir "JUnit 5 kullanan test çalıştırıcısı ile hiçbir test bulunamadı" "
P Satish Patro

2
@PSatishPatro Yukarıdakileri ekledikten sonra. Bu Junit test durumu için yapılandırmayı çalıştırmanız ve ardından Sınıfyolu sekmesi-> Gelişmiş-> Kitaplık Ekle-> Tamam-> Junit-> Bitir'e gitmeniz gerekir. Sonra devam et ve Çalıştır.
Jaison Varghese'nin

27

Benim durumumda sorun bendim ve Eclipse gibi bir IDE yok. JUnit 4 Test sınıfını içe aktardım.

Bu nedenle, bunu İçe Aktarmayın:

import org.junit.Test  // JUnit 4

Ancak şunu içe aktarın:

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

JUnit 4 ve 5 arasında geçiş yapıyordum çünkü mevcut proje JUnit 5 kullanıyor, ancak hataları Hazırda Beklet'e rapor ederken vb. JUnit 4'e geçmem gerekiyor. İçeri aktarımları yanlışlıkla karıştırdım. 🤦♂️
Kawu

20

Şimdiye kadarki yanıtlar, Eclipse kullanması gerekmeyen diğer insanlarla kod paylaşma sorununu ele almadı. İşte bir önerme. Anahtar, Eclipse Vakasını çözmek için bir maven profili kullanmaktır.

junit5.versionPonponunuzda aşağıdaki gibi bir mülk tanımladığınızı varsayar :

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

ardından profilesbölüme aşağıdakileri ekleyin:

<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>

Bundan sonra yapmanız gereken tek şey, yerel Eclipse'inizdeki profili seçmektir: Projenize sağ tıklayın ve seçin Maven > Select Maven Profiles...(veya Ctrl+ Alt+ ' ya basın P) ve ardından az önce oluşturduğumuz "tutulma" profilini kontrol edin.

Maven Profili Seçimi

Bununla bitirdiniz. Eclipse'iniz beklendiği gibi Junit 5 testleri çalıştıracak, ancak eklediğiniz yapılandırma diğer yapıları veya diğer IDE'leri kirletmeyecek


12

Bu maven bağımlılığını JUnit Jupiter (v.5.5.1) ile eklemek sorunu çözer.

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

Spring Boot 2.x için JUnit 5'i getiren bir JAR projem vardı. Bu bağımlılığı ekledim ve giderilmiş gibi görünüyor. Teşekkürler!
David Bradley

12

BASİT DÜZELTME: (JUnit 5 Kitaplığı Ekle)

TALİMATLAR:

  • Projeye sağ tıklayın -> Yol Oluştur -> Oluşturma Yolunu Yapılandır
  • Açılır pencerede -> Kitaplık Ekle -> JUnit -> JUnit 5 -> Bitir -> Uygula
  • Projenize eklenen JUnit 5 Kitaplığını (ve kavanozlarını) görmelisiniz
  • Projeye sağ tıklayın -> Maven -> Projeyi Güncelle -> Tamam

9

Çözümlerden hiçbiri yardımcı olmadı:

Sorun, Eclipse 2018-12'nin JUnit 5.3.1'i desteklemesidir. Bundan önceki bir sürümle başlatırsanız başarısız olur.

Bu yüzden en az 5.3.1 kullandığınızdan emin olun.

5.4.0 da çalışıyor.

Ebeveyn ponuzun Spring Boot olması durumunda, (bağımlılık yönetiminde) junit-jupiter-api'nin aynı sürüme ayarlandığından emin olmanız gerekir . Junit-platform-runner veya -launcher'a ihtiyacınız yok !


2
Bahşiş için teşekkürler. 2019-3 kullanıyorum ve <junit-jupiter.version>5.4.1</junit-jupiter.version>Spring boot'da (2.1.3.RELEASE) kullanılan sürümü geçersiz kılmak için özellik ekledim .
Ritesh

3
Bunu benim için düzelten oydu. -Launcher bağımlılığını kaldırdım ve çalışmaya başladı. (tutulma 2019-09 ve Haziran 5.4.2)
Raymond

Bu çözüm benim için de çalışıyor. Ancak benim durumumda 5.3.1'den 5.5.1'e ve junit-platform-engine'i 1.5.1'e değiştirdim.
Arwan Khoiruddin

1
Bu benim için düzeltti. 2020-03 tutulmasında testler junit 5.5.2 sürümüyle değil 5.6.0 ile başladı. Cevabınız için genel bir güncelleme olarak: En azından eclipse'in kullandığı junit versiyonunu kullanmak gerekebilir.
Lars Briem

8

Andrii Karaivanskyi'nin cevabının ardından işte Maven POM bildirisi:

<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>

GÜNCELLEME

Tarafından yorumun gereğince Alexander Wessel kullanabilirsiniz org.junit: junit-bom anlatıldığı gibi onun cevabını sorusu için LauncherFactory için NoClassDefFoundError neden JUnit 5 kullanıyorum bulundu Eclipse yok testlerinin .


1
Jüpiter ve platform sürümleri için özellikler bildirmeyin, bunun yerine BOM'u kullanın . Temel olarak, bağımlılık yönetimi etiketindeki scope=import type=pomBOM'a bir bağımlılık ekleyin, ardından bağımlılıklar bölümünde bir sürüm vermeden , test kapsamında junit-platform-launcher ve junit-jupiter-engine'e bağımlılıklar ekleyin . BOM her zaman sınıf yolunda JUnit Platform ve Jüpiter'in yalnızca bir sürümüne sahip olmanızı ve ilgili sürümlerin amaçlanan sürümler olmasını sağlayacaktır (ör. 1.2.0 ile 5.2.0).
Alexander Wessel

@AlexanderWessel BOM yok. Bu, nerede olursa olsun Maven ile bildirilmesi gereken bağımlılıkları içeren bir örnek alıntıdır.
Gerold Broser

1
Kendinizin bir ürün reçetesine sahip olup olmadığı (veya daha doğrusu projenizin sahip olduğu) değildir. Ben tarafından bu açıklıyordu ithal BOM JUnit 5 sağladığını , böylece de artık versiyonunu ilan etmeye gerek, sen, JUnit Jüpiter ve JUnit Platformu versiyonları uyumlu olmasını sağlamak ve bireysel bağımlılıkları bir sürümünü bildirmek gerekmez özellikleri. Açık olmak gerekirse: Sizin örnek yapar çalışma cezası. Ancak JUnit BOM'u içe aktarmak biraz daha zarif (alçakgönüllü görüşüme göre) ve bazı durumlarda daha güvenli.
Alexander Wessel


7

Bilginize, "junit5 kullanılarak test bulunamadı" ifadesinin bir başka nedeni de (yanlışlıkla veya kasıtlı olarak) test senaryolarının "özel" olarak beyan edilmesidir:

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

Halka açık olmaları gerekir.


5

Ayrıca kitaplığı eklemeniz gereken aynı sorunla karşılaştım, Junit Kitaplığı zaten Eclipse ile birlikte sağlanmıştır, bu yüzden sadece aşağıdan takip etmeniz gerekir

Yol Oluştur> Derleme Yolunu Yapılandır> kitaplık> Kitaplık ekle> JUnit> Sonraki> bitir

Benim için çalışıyor


Tutulmada iyi çalıştı. Sürüm: 2020-06 (4.16.0) Yapı kimliği: 20200615-1200
OJVM

4

Başlangıçtan itibaren hata mesajı size sınıfın bulunmadığını söyler: NoClassDefFoundErrorbu, sorunun Junit'e giden PATH olduğu anlamına gelir.

  1. Proje klasörüne sağ tıklayın ve Özellikler'i seçin VEYA proje klasörünü seçin ve cmd + i kombinasyonuna basın.

  2. "Java Build Path" listesinden seçin.

  3. "Kitaplıklar" sekmesini seçin
  4. JUnit 5 (veya JUnit 4) "Modulepath" e eklenirse, "JUnit 5" i seçin ve Kaldır'a basın.
  5. "Sınıfyolu" nu seçin, "Kitaplık Ekle ..." ye basın.
  6. açılan "Kitaplık Ekle" penceresinden JUnit'i seçin, ileri düğmesine basın.
  7. İhtiyacınız olan JUnit kitaplığı sürümünü seçin ve Son'a basın.

Hepsi bu. Testi tekrar çalıştırmayı deneyin.


4

sen bilmelisin ki :

@ Junit4'ten önce @Test ile birlikte gelir: " org.junit.Test'i içe aktar "

VE

@BeforeEach gelen Junit5 ": gider ithalat org.junit.jupiter.api.Test "

Bu nedenle, Junit'in aynı sürümünden içe aktarımı kullandığınızdan emin olun, aksi takdirde Çalışmayacağını tahmin ediyorum.


3

STS 3.9.1 kullanarak aynı sorunu yaşadım. Ancak, şu anda herhangi bir yeni JUnit5 özelliğine ihtiyacım yok, bu yüzden eski bir sürümü kullanmaya zorladım. Maven kullanıyorsanız, pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyebilirsiniz:

<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>

Bu benim için hile yaptı (en azından JUnit5'e açıkça ihtiyacım olmadığı sürece).


JUnit5 kullanıyorsanız neden "org.junit.vintage" eklediniz? Sadece geriye dönük uyumluluk içindir (eski JUnit kullanmak gibi) AFAIK.
Levent Divilioğlu

Çünkü o proje ve STS 3.9.1 ile JUnit5 değil JUnit4 kullanamadım / kullanamadım.
mahe

3

Yeni bir TestCase oluşturduktan sonra da aynı sorunu yaşadım: Eclipse -> New -> JUnit Test Case. Erişim düzeyi değiştiricisi olmayan bir sınıf oluşturur. Problemi , class anahtar kelimesinin önüne bir genel koyarak çözebilirim .


Hem sınıf hem de yöntem genel anahtar kelime gerektirdi. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi

3

Herkesin IDE hatası olduğunu söylediği gibi, Eclipseve denedim STS. Her iki durumda da başarısız oluyor.

Geçici bir çözüm olarak, pom.xml dosyasını aşağıdaki gibi değiştirerek düzelttim.

Bu iki maven bağımlılığını ekledim junit-jupiter-engineve junit-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>

Ayrıca lütfen her iki maven bağımlılığının sürümünü de properties etiketine eklediğinizden emin olun.

<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
Junit-platform-launcher bağımlılığını eklemek sorunu benim için çözdü. Teşekkürler
Venkatesh Manohar

3

Eclipse 2019-09 kullanıyorum.

Junit-bom sürümünü en az 5.4.0'a güncellemem gerekiyordu. Daha önce 5.3.1 vardı ve bu, OP'nin aynı semptomlarına neden oldu.

Yapılandırmam şimdi:

    <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>

başka bir seçenek de pom özelliklerine <junit-jupiter.version> 5.4.0 </junit-jupiter.version> eklemektir
Uri Loya

2

Yorumlara kod blokları göndermek mümkün olmadığından, işte JUnit 5 gerektiren projelerde kullandığım POM şablonu. Bu, Eclipse'de "JUnit Testi Olarak Çalıştır" ve projeyi düz Maven ile oluşturmaya izin verir.

<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>

Artık JUnit'i güncellemek istiyorsanız sürümü yalnızca tek bir yerde güncellemeniz gerektiğini görebilirsiniz. Ayrıca, platform sürüm numarasının POM'unuzun herhangi bir yerinde görünmesi gerekmez (uyumlu bir sürümde), junit-bomiçe aktarma yoluyla otomatik olarak yönetilir .


2

Kullanıyorum:

Spring Tool Suite 4 Sürüm: 4.4.2.RELEASE Yapı Kimliği: 201911201053 Java sürümü: 1.8.0_191

ve görüntülenen mesaj 'JUnit5' test çalıştırıcısı ile test bulunamadı

benim için işe yarayan şey aşağıdaki yapılandırmaydı

    <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

Şu gruba sahip JUnit 5 platform başlatıcısı yok: "org.junit.platform", ad: "junit-platform-launcher"

Sadece POM'unuzu ekleyin:

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

1

Eclipse sürümü Oxygen.3a Release'de (4.7.3a) karşılaştığım aynı hata. Maven Bağımlılıkları uyuşmazlığında sorun var. Sorunu çözmek için Pom.xml'imi aşağıdaki bağımlılıklar ile güncelledim.

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>


Eğer JUnit 5 Kullanıcı ilişkin Kılavuzu gördünüz mü junit-platform-runner": Bir JUnit 4 ortamda JUnit Platformunda testleri ve test paketleri yürütmek için Runner. "
Gerold Broser

1

Yalnızca kullanabilirsiniz junit-jupiteryerine bir test bağımlılık olarak 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
Bu çözüm benim için JUnit 5.6.2, Java 11 (ve 2020-03 / 4.15.0 tutulması) ile çalıştı
coseos

1

Benim için, JUnit 5 Kitaplığı eklemek için derleme yolunu ve ayrıca bağımlılığı ekleyerek yapılandırdım

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

ayrı ayrı.


1

Bu sorunla Eclipse (Sürüm: 2019-12 (4.14.0)) ile de karşılaştım. Çözüm IntelliJ kullanıyor ya da Maven testini Eclipse'de bu tür testleri çalıştırmak için kullanıyor gibi görünüyor.


1

Aslında spring-tool-suite-4-4.5.1'i kullandım ve bir test sınıfı çalıştırmak istediğimde bu hatayı yaşadım. ve çözüm, Kitaplıklar java build path img'de 'java build path', 'junit5' eklemekti


0

değişmelisin

@Test
public static void testmethod(){}

-e

@Test
public void testmethod(){}

@Test desteklenmeyen statik yöntemdir


0

Ben de aynı hatayla karşılaştım ve benim durumumda bu, Project Properties > Maven > Update projectprojeye gitmek ve / veya projeyi temizlemek ve yeniden inşa etmek basit bir meseleydi .


0

Tutulma menüsü aracılığıyla Test.class'ımı ekledim ve çalıştım. Projeye sağ tıklayın -> Yeni -> Diğer -> JUnit -> JUnit Test Durumu


0

Junit-platform-launcher / junit-platform-runner sürümünden kaynaklanabilir.

1.1.0 çalışmıyor

1.4.1 kurulumumda çalışıyor.

Sanırım bu, diğer sürümlerle değil, junit'in daha yüksek sürüm kitaplıklarıyla çalıştığı için tutulmada bir hata.

Bu benim sorunumu çözdü. Diğer çözüm benim için daha az uygulanabilir veya riskli görünüyordu. Teşekkürler.


0

Jüpiter api sürümümü en son sürümle değiştirdiğimde çözüldü. Bu arada, benim tutulma ve diğer tutulma uzantıları ide'lerim (STS gibi) yapı yolu hatası alıyor. Her maven güncellemesi için ide, beni JRE Sistem Kitaplığını ayarlamaya zorluyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.