Soru Eclipse JUnit - Eclipse penceresinde “initializationError” görmenin olası nedenleri


Bu sorunun oldukça genel olduğunu biliyorum, ancak bu hatanın neden ortaya çıkabileceğine dair hiçbir ipucu bulamadım. Görmenin olası sebepleri nelerdir? initalizationError Eclipse penceresinde? Faydalı bilgilerden sadece uzun ve işe yaramaz bir başarısızlık iznim (buraya dahil değil).

JUnit 4.11 kullanıyorum

Aşağıdaki kodu yazdım - işe yarayıp yaramadığını görmek için:

package test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class SimpleTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void test() {
    assertEquals(15, 15);
}

}

Düzenle: Üzgünüz Eclipse penceresinde aslında bir "Arıza izleme" denir:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing     at
java.lang.ClassLoader.defineClass1(Native Method)   at
java.lang.ClassLoader.defineClass(Unknown Source)   at
java.security.SecureClassLoader.defineClass(Unknown Source)     at
java.net.URLClassLoader.defineClass(Unknown Source)     at
java.net.URLClassLoader.access$100(Unknown Source)  at
java.net.URLClassLoader$1.run(Unknown Source)   at
java.net.URLClassLoader$1.run(Unknown Source)   at
java.security.AccessController.doPrivileged(Native Method)  at
java.net.URLClassLoader.findClass(Unknown Source)   at
java.lang.ClassLoader.loadClass(Unknown Source)     at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  at
java.lang.ClassLoader.loadClass(Unknown Source)     at
org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at 
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
    at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
    at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    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)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException:
org.hamcrest.SelfDescribing     at java.net.URLClassLoader$1.run(Unknown
Source)     at java.net.URLClassLoader$1.run(Unknown Source)    at
java.security.AccessController.doPrivileged(Native Method)  at
java.net.URLClassLoader.findClass(Unknown Source)   at
java.lang.ClassLoader.loadClass(Unknown Source)     at
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  at
java.lang.ClassLoader.loadClass(Unknown Source)     ... 25 more

44
2018-03-03 20:50


Menşei


stacktrace dahil lütfen?
Gerçekten de - yığın yığınının (ve tam mesajın) sizin için yararlı görünmemesi, aslında yararlı değil. - Jon Skeet
Sınıf yolundan bir kavanoz eksik. Şuna bak: kaynak - Olimpiu POP


Cevaplar:


Muhtemelen iki sorundan birine sahipsiniz:

1) Hamcrest içermeyen JUnit 4.11 kullanıyorsunuz. Hamcrest 1.3 kütüphanesini sınıfınıza ekleyin.

2) Sınıf yolunuzda hamcrest 1.3 var, ama sınıf yolunuzda başka bir versiyonda hırsızlık ya da hamcrest var.

Arka plan için, cihaza öncesi 4.11 hamcrest 1.1 bir kesim sürümü dahil. Bu sınıfları 4.11 kaldı.


40
2018-03-03 21:57



Gerçekten, hamcrest eklemeyi unuttum. Bilgi için teşekkürler. - lixonn
Matthew, Proje> Temizlik benim için işe yaradı. Bana nedeninin ne olabileceğini söyleyebilir misin? Teşekkür ederim. Chenqui. - Borat Sagdiyev
Tam olarak Junit.4.10.jar için çalışıyorum. Ama junit.4.11.jar için hata veriyor. Sadece 4.10'u denedim. 4.11 için çözüm denemedi. - gnganpath
Java8 yükseltme ile. 4.12'ye geçtim. Onun geçiş bağımlılığı olarak hamcrest vardı ve sorunu çözdü. - Jess


Benim için aptalca bir hataydı. Ben yanlışlıkla test olarak ayarladım özel yerine halka açık:

@Test
private void thisTestWasCausingProblems() {
...
}

olmalıydı

@Test
public void thisTestIsOK() {
...
}

34
2018-02-18 17:03



Yöntemin kapsamını açıklamayı unutmak aynı soruna neden olacaktır. Bir yöntemi halka açık olarak ilan etmek benim için düzeltdi. - buddamus
Yönteme sahip olmak static ayrıca bu hataya neden olur. - Marius Schär
Aynı problem ile @Before yöntemi vardı. Günü kurtardı! - jfneis
Yanlışlıkla işaretlemeyi unuttum. sınıf kamu olarak. - Adam Johns


Sadece "Project> Clean ..." seçeneğini deneyin - Eclipse'deki birçok problemin çözümü gibi görünüyor!


16
2017-08-11 17:33



Bu yöntemin benim için çalıştığını görmek beni şaşırttı. Aslında yaptı! Btw, Eclipse projemde Junit 4.11 ve hamcrest 1.3 var. - Borat Sagdiyev
evet bunun "çözüm" olduğunu onaylıyorum ama neden dünya neden ???? - Mahesha999
Bunu yaptık (yapı tamamlanıncaya kadar 'Otomatik Olarak Oluştur' özelliğini devre dışı bıraktım ve şimdi çalışıyor! Bu "çözüm". - Nenad Bulatovic


Benim için kayıptı static JUnit ek açıklama yöntemlerinden birinde anahtar kelime, ör .:

@AfterClass
public static void cleanUp() {
    // ...
}

7
2017-11-04 04:43



Ya da kayıp public anahtar kelime ... - Drux
Karşıt problemim vardı @Before ve @AfterBu işlevler statik olamaz! - Adam Marcionek


Bu hatayı, sınıfın @Ignore ile açıklandığı zaman aldım ve üzerine sağ tıklayarak belirli bir testi çalıştırmayı denedim. @Ignore kaldırılması sorunu çözdü.


5
2018-05-11 20:37





Aynı hatayı aynen denedim. Sorunum, oluşturduğum SetUp yönteminin statik olarak bildirildi.

Tutulma kullanılıyorsa, hatanın üzerine tıklamak ve Arıza izleme penceresini hemen aşağıdan kontrol ederek iyi bir açıklama elde edilebilir. Bu, gerçek sorunu nasıl buldum!


4
2017-11-03 22:02



Teşekkürler Pablo, sorunumu bulmak için ihtiyacım olan tam olarak bu. - Chris M
Arıza izleme penceresinde herhangi bir şey görmüyorsanız, arıza izleme penceresinin sağ üstündeki Filter Stack Trace (Filtre Yığını İzi) düğmesine tıklayın. - Luke


Bu sorun, sınıfınızda özel bir Kural varsa da oluşur:

@Rule
private TemporaryFolder folderRule;

Halka açıl.


2
2017-11-24 16:10





Benim için, test yönteminin "dönüş tipi" nedeniyle oldu. "Boş" olmalı


1
2017-08-07 06:45



Evet, bu da beni aldı ... Hızlı bir test kurdum ve sadece @Test yanlışlıkla bir fonksiyon üzerinde açıklama ve bu hatayı attı! - Brad Parks


Benim için commons-logging ile ilgili bir şeydi. Kullanıyorum beri

@RunWith(SpringJUnit4ClassRunner.class)

Bu benim sorunumu çözdü

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

1
2017-08-16 03:24





Aynı problemi yaşadım: Bir kez excel yol sorunu ve başka bir zaman eksikti @Test Ek açıklama.


1
2017-09-28 10:31



Peki, ne yazık ki Excel kurulumun bir parçası değildir ve yöntem açıklamalıdır. - Scorpio
Test Sınıfının hayırlı olması @Test hiç benim için başlatma hatası neden oldu. - SpaceTrucker