java जुनीट: परीक्षण यूटिल कक्षाओं में "कोई रनने योग्य तरीकों" से कैसे बचें




ant junit (7)

  1. यदि यह आपकी बेस टेस्ट क्लास है उदाहरण के लिए सारस्टेस्ट और आपके सभी परीक्षण इसे विस्तारित करते हैं तो इस वर्ग को सार के रूप में परिभाषित करें
  2. यदि यह कक्षा का उपयोग करता है तो बेहतर हटाएं * वर्ग का नाम बदलें नाम का नाम MyTestUtil या उपयोग आदि है।

https://code.i-harness.com

मैंने जुनीट 3.8 से जुनीट 4.4 पर स्विच किया है। मैं चींटी का उपयोग करके अपने परीक्षण चलाता हूं, मेरे सभी परीक्षण सफलतापूर्वक चलते हैं लेकिन परीक्षण उपयोगिता वर्ग "कोई रनने योग्य विधियों" त्रुटि के साथ विफल हो जाते हैं। मैं जिस पैटर्न का उपयोग कर रहा हूं वह है टेस्ट फ़ोल्डर के तहत नाम * टेस्ट * के साथ सभी वर्गों को शामिल करना।

मैं समझता हूं कि धावक को @Test विशेषता के साथ एनोटेटेड कोई विधि नहीं मिल सकती है। लेकिन उनमें ऐसी एनोटेशन नहीं है क्योंकि ये कक्षाएं परीक्षण नहीं करती हैं। आश्चर्यजनक रूप से ग्रहण में इन परीक्षणों को चलाने के दौरान, यह इन वर्गों के बारे में शिकायत नहीं करता है।

JUnit3.8 में यह कोई समस्या नहीं थी क्योंकि इन उपयोगिता वर्गों ने टेस्टकेस का विस्तार नहीं किया था, इसलिए धावक ने उन्हें निष्पादित करने की कोशिश नहीं की थी।

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

क्या इस समस्या के लिए कोई सुरुचिपूर्ण समाधान है?


@Ignore के साथ अपने उपयोग कक्षाओं को एनोटेट करें। यह जुनीट को परीक्षण के रूप में चलाने और चलाने के लिए नहीं करेगा।


चींटी अब skipNonTests विशेषता के साथ आता है जिसे आप जो खोज रहे हैं उसे ठीक करने के लिए डिज़ाइन किया गया था। अपनी आधार कक्षाओं को अमूर्त में बदलने या उन्हें एनोटेशन जोड़ने की आवश्यकता नहीं है।


जुनीट को अपनी टेस्ट बेस क्लास को तुरंत चालू करने से रोकने के लिए बस इसे बनाएं

public abstract class MyTestBaseClass { ... whatever... }

(@ इग्नोर ने इसे अनदेखा किया है जिसे मैं अस्थायी रूप से अनदेखा परीक्षणों के लिए आरक्षित करता हूं।)


मेरे विशिष्ट मामले में निम्नलिखित परिदृश्य है। हमारे परीक्षण

public class VenueResourceContainerTest extends BaseTixContainerTest

सब विस्तारित

BaseTixContainerTest

और जुनीट बेसटिक्सकंटैनरटेस्ट चलाने की कोशिश कर रहा था। गरीब बेसटिक्सकॉन्टेनरटेस्ट बस कंटेनर सेट करने, क्लाइंट को सेटअप करने, कुछ पिज्जा ऑर्डर करने और आराम करने की कोशिश कर रहा था ... आदमी।

जैसा कि पहले उल्लेख किया गया है, आप कक्षा को एनोटेट कर सकते हैं

@Ignore

लेकिन इसने जुनीट को उस परीक्षा को छोड़ने के लिए प्रेरित किया (जैसा कि पूरी तरह से अनदेखा किया गया था)।

Tests run: 4, Failures: 0, Errors: 0, Skipped: 1

उस तरह की परेशान मुझे।

इसलिए मैंने बेसटिक्सकंटैनरटेस्ट सार बनाया, और अब जुनीट वास्तव में इसे अनदेखा करता है।

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

यदि आपकी परीक्षा कक्षा में लिखा गया है तो org.junit.jupiter.api.Test; इसे हटाएं और आयात org.junit.Test लिखें; इस मामले में यह भी मुझे काम किया।


मान लें कि आप टेस्ट क्लास खोजने के लिए इस्तेमाल किए गए पैटर्न के नियंत्रण में हैं, मैं सुझाव देता हूं कि *Test* बजाय *Test मैच के लिए इसे बदलना। इस तरह TestHelper मिलान नहीं होगा, लेकिन FooTest होगा।





testing