2016-04-03 18 views
5

में पुराना संस्करण चलाता है मेरे पास मेरी परियोजना में एक जुनीट टेस्ट क्लास है जो क्रमशः अद्यतन किया जाता है - मैं हर कुछ हफ्तों में परीक्षण जोड़ता हूं और कभी-कभी परीक्षण कोड को संशोधित करता हूं।यूनिट टेस्ट क्लास ग्रहण

आश्चर्य की बात है, जब मैं ग्रहण जुनीट रनर 4 का उपयोग कर टेस्ट क्लास चलाता हूं, तो यह मेरा पुराना कोड (अद्यतन से पहले) चलाता है, न कि नया। मैं कोड बदल सकता हूं, परीक्षण जोड़ या निकाल सकता हूं लेकिन यह अभी भी पुराना कोड चलाता है।

मैंने समस्या को अलग करने की कोशिश की और मैंने एक ही परीक्षण चलाया जिसे मैंने अभी लिखा है और किसी भी स्टैक ट्रेस के बिना कुख्यात "अनियंत्रित परीक्षण" त्रुटि मिली है जिससे समस्या है कि समस्या क्या है।

JUnit runner response. test7() is indeed within the compiled test class

मैं कुछ शोध और कुछ अन्य धागे यहाँ के अनुसार किया था, बहुत से लोगों को इस समस्या को लेकर JUnit 3 अनुकूलता का सामना करना पड़ा \ JUnit 4, लेकिन इस मामले यहाँ नहीं है - मैं अपने सभी परीक्षण पर टिप्पणी @Test के साथ और मैं TestCase कक्षा को विस्तारित नहीं करता हूं।

सफाई/सभी ग्रहण परियोजनाओं का निर्माण करने से मदद नहीं मिलती है। हालांकि, जब मैं अपने प्रोजेक्ट को क्लीन इंस्टॉल करता हूं, तो यह समस्या स्वयं काम करती है, लेकिन इसमें बहुत अधिक समय लगता है। इसके अलावा, क्लास का नाम बदलना (ग्रहण में Alt + Shift + R) को नया कोड तुरंत चलाने के लिए मिलता है, लेकिन इसे अपने मूल (और मान्य) नाम पर वापस नामित करने के लिए पुराने कोड को फिर से चलाने के लिए मिलता है (डब्ल्यूटीएफ?)

सहायता की सराहना की जाएगी, 10x

+1

यदि यह पुराना कोड चलाता है तो ** ** पुराना कोड है, या तो स्रोत या संकलित में। क्या आपके पास कहीं पुराना कोड है, यहां तक ​​कि एक .jar में भी जो कक्षा पथ में होता है? – Harald

+0

मुझे लगता है कि मैं कहीं कहीं करता हूं, लेकिन ग्रहण ग्रहण ने इसे संकलित किया है (जो उसने किया), ग्रहण धावक को कोड चलाने के लिए निर्देशित नहीं किया गया था जिसे इसे चलाने के निर्देश दिए गए थे? – KidCrippler

+2

क्या यह संभव है कि आपको एक्लिप्स को इस तरह से कॉन्फ़िगर किया गया है कि परीक्षण धावक 'लक्ष्य' के तहत संकलित कक्षाओं का उपयोग कर रहा है लेकिन ग्रहण कंपाइलर एक अलग फ़ोल्डर (यह डिफ़ॉल्ट रूप से' बिन' है) पर आउटपुट कर रहा है? यह समझा सकता है कि एक मेवेन बिल्ड इस मुद्दे को हल क्यों करता है। – sisyphus

उत्तर

0

मैं अपनी समस्या को हल करने में कामयाब रहा (हार्लार्ड द्वारा योगदान की गई टिप्पणी से प्रेरित)। मेरी परियोजना की लक्षित निर्देशिका की जांच करने के बाद, मैंने देखा कि इसके अंदर टेस्ट-क्लास डीआईआर में मेरे परीक्षण की बाइनरी शामिल नहीं है। मैंने तब देखा कि मैंने कक्षाओं/स्रोत/जावा के भीतर कक्षाओं को गलत स्थान दिया है और उन्हें एक पैकेज संरचना में रखा है जो मेरे प्रोजेक्ट की पैकेज संरचना के अनुरूप नहीं है, वे स्रोत/परीक्षण/जावा की सीधी उप-निर्देशिकाएं थीं। इसलिए, ग्रहण ने उन्हें सही जगह पर नहीं रखा और उनके लिए द्विआधारी उत्पन्न करने का एकमात्र तरीका एक मेवेन बिल्ड निष्पादित करना था। मेरी सभी टेस्ट कक्षाओं को सही पैकेज संरचना में पुन: सक्रिय करने के बाद, सबकुछ पूरी तरह से काम करता है।

+0

धन्यवाद। मुझे अपनी '.classpath' फ़ाइल में स्पष्ट रूप से' आउटपुट' निर्देशिका निर्दिष्ट करना था ताकि इसे काम पर लाया जा सके: ' '। इससे पहले मेरे पास 'आउटपुट' भाग नहीं था इसलिए 'लक्ष्य' निर्देशिका के तहत संकलित संस्करण थे लेकिन ग्रहण निष्पादन के लिए सही जगह पर नहीं। –

0

एक और समाधान मैन्युअल रूप से प्रोजेक्ट के "लक्ष्य" फ़ोल्डर को हटा देगा और इसे पुनर्निर्माण करेगा। यह इस तरह की सभी समस्याओं को हल करना चाहिए।

संबंधित मुद्दे