सवाल ग्रहण जुनीट - ग्रहण विंडो में "प्रारंभिकरण त्रुटि" देखने के संभावित कारण


मुझे पता है कि यह सवाल बहुत सामान्य है लेकिन मुझे कोई संकेत नहीं मिला है कि यह त्रुटि क्यों दिखाई दे सकती है। देखने के संभावित कारण क्या हैं initalizationError ग्रहण खिड़की में? मुझे कोई उपयोगी जानकारी नहीं मिलती है केवल एक लंबी और बेकार विफलता ट्रेस (यहां शामिल नहीं है)।

मैं जुनीट 4.11 का उपयोग कर रहा हूं

मैंने निम्नलिखित कोड लिखा है - यह देखने के लिए कि यह काम करता है या नहीं:

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);
}

}

संपादित करें: क्षमा करें ग्रहण विंडो में इसे वास्तव में एक "असफलता निशान" कहा जाता है:

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


मूल


कृपया स्टैकट्रैक शामिल करें?
वास्तव में - सिर्फ इसलिए कि स्टैक ट्रेस (और पूर्ण संदेश) आपके लिए उपयोगी प्रतीत नहीं होता है इसका मतलब यह नहीं है वास्तव में उपयोगी नहीं। - Jon Skeet
आप अपने क्लासपाथ से कुछ जार खो रहे हैं। इसकी जांच करें: संसाधन - Olimpiu POP


जवाब:


आपको शायद दो समस्याओं में से एक मिला है:

1) आप जुनीट 4.11 का उपयोग कर रहे हैं, जिसमें हैमक्रिस्ट शामिल नहीं है। अपने क्लासपाथ में हैमक्रिस्ट 1.3 लाइब्रेरी जोड़ें।

2) आपके क्लासपाथ पर आपके पास 1.3 हैमस्ट्रेट है, लेकिन आपके क्लासपाथ पर जूनिट या हैमक्रिस्ट का एक और संस्करण है।

पृष्ठभूमि के लिए, जूनिट प्री 4.11 में हैमक्रिस्ट 1.1 का कट ऑफ संस्करण शामिल था। 4.11 ने इन वर्गों को हटा दिया।


40
2018-03-03 21:57



वास्तव में, मैं hamcrest जोड़ने के लिए भूल गया। जानकारी के लिए धन्यवाद दोस्तों। - lixonn
मैथ्यू, प्रोजेक्ट> स्वच्छ सिर्फ मेरे लिए काम किया। क्या आप कृपया मुझे बता सकते हैं कि कारण क्या हो सकता है? धन्यवाद। Chenqui। - Borat Sagdiyev
वास्तव में मैं Junit.4.10.jar के लिए काम कर रहा हूं। लेकिन जूनिट.4.11.jar के लिए त्रुटि दे रही है। मैंने अकेले 4.10 कोशिश की। 4.11 के लिए समाधान की कोशिश नहीं की। - gnganpath
मेरे जावा 8 अपग्रेड के साथ। मैंने जूनिट 4.12 में अपडेट किया। यह अपनी पारस्परिक निर्भरता के रूप में hamcrest था और इस मुद्दे को हल किया। - Jess


मेरे लिए यह एक मूर्ख गलती थी। मैंने अनजाने में परीक्षण को सेट किया है निजी के बजाय जनता:

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

इसे होना चाहिए था

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

34
2018-02-18 17:03



विधि के दायरे को घोषित करने के लिए भूलना एक ही मुद्दा पैदा करेगा। एक विधि घोषित करने के रूप में जनता ने इसे मेरे लिए तय किया। - buddamus
विधि होने के बाद static यह त्रुटि भी उत्पन्न करता है। - Marius Schär
@Before विधि के साथ एक ही समस्या थी। दिन बचाया! - jfneis
मैं गलती से चिह्नित करने के लिए भूल गया कक्षा जनता के रूप में - Adam Johns


बस "प्रोजेक्ट> क्लीन ..." आज़माएं - ग्रहण में कई समस्याओं का समाधान प्रतीत होता है!


16
2017-08-11 17:33



मैं देखकर आश्चर्यचकित हुआ कि यह विधि मेरे लिए काम करती है। यह वास्तव में किया था! बीटीडब्ल्यू, मेरे पास मेरी ग्रहण परियोजना में जूनिट 4.11 और हैमक्रिस्ट 1.3 है। - Borat Sagdiyev
हाँ मैं पुष्टि करता हूं कि यह "द" समाधान है .... लेकिन क्यों दुनिया क्यों ???? - Mahesha999
मैंने यह किया (बिल्ड को पूरा होने तक स्वचालित रूप से 'स्वचालित रूप से बनाएं' अक्षम कर दिया गया, और अब यह काम करता है! यह "द" समाधान है। कुडोस! - Nenad Bulatovic


मेरे लिए यह एक लापता था static जुनीट एनोटेटेड विधियों में से एक में कीवर्ड, उदा।

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

7
2017-11-04 04:43



या एक लापता public कीवर्ड ... - Drux
मैं विपरीत समस्या का उपयोग कर रहा था @Before तथा @After, वे कार्य स्थिर नहीं हो सकते हैं! - Adam Marcionek


मुझे यह त्रुटि मिली जब कक्षा @Ignore के साथ एनोटेट की गई थी और मैंने उस पर राइट क्लिक करके एक विशिष्ट परीक्षण चलाने की कोशिश की। @Ignore को हटाने से समस्या ठीक हो गई।


5
2018-05-11 20:37





मैंने सटीक एक ही त्रुटि का प्रयोग किया है। मेरी समस्या यह थी कि मैंने बनाई गई SetUp विधि को स्थिर के रूप में घोषित किया गया था।

यदि ग्रहण का उपयोग करते हैं, तो त्रुटि के ऊपर क्लिक करके और फिर नीचे विफलता ट्रेस विंडो की जांच करके एक अच्छा विवरण प्राप्त हो सकता है ... इस तरह मुझे असली समस्या मिली!


4
2017-11-03 22:02



धन्यवाद पाब्लो, यह वही है जो मुझे अपनी समस्या को खोजने के लिए जरूरी था। - Chris M
यदि आप विफलता ट्रेस विंडो में कुछ भी नहीं देखते हैं तो विफलता ट्रेस विंडो के ऊपरी दाएं भाग पर फ़िल्टर स्टैक ट्रेस बटन पर क्लिक करें। - Luke


यह समस्या तब भी होती है जब आपके पास कक्षा में एक निजी नियम है:

@Rule
private TemporaryFolder folderRule;

इसे सार्वजनिक बनाएं


2
2017-11-24 16:10





मेरे लिए, यह परीक्षण विधि के "वापसी प्रकार" के कारण था। यह "शून्य" होना चाहिए


1
2017-08-07 06:45



हाँ यह मुझे भी मिला ... मैं जल्दी से एक परीक्षण स्थापित कर रहा था, और बस डाल दिया @Test गलती से एक समारोह पर एनोटेशन, और यह इस त्रुटि फेंक दिया! - Brad Parks


मेरे लिए यह कॉमन्स-लॉगिंग के साथ कुछ करना था। चूंकि मैं उपयोग कर रहा था

@RunWith(SpringJUnit4ClassRunner.class)

इसने मेरे मुद्दे को हल किया

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

1
2017-08-16 03:24





मुझे एक ही समस्या थी: एक बार यह एक्सेल मार्ग मुद्दा था और दूसरी बार यह गायब था @Test एनोटेशन।


1
2017-09-28 10:31



खैर, दुख की बात है कि एक्सेल सेटअप का हिस्सा नहीं है, और विधि एनोटेटेड है। - Scorpio
बिना टेस्ट क्लास के साथ @Test बिलकुल मेरे लिए प्रारंभिक त्रुटि हुई। - SpaceTrucker


मुझे बस एक ही समस्या और एक ही संदेश था। मैं जावा बिल्डिंग पथ में आयात करके इसे ठीक करने में सक्षम था hamcrest-all-1.3.jar पुरालेख। मैं एक जुनीट 4.12 संस्करण का उपयोग कर रहा हूँ।


1
2018-03-26 03:26