2017-05-18 14 views
5

JUnit 5 User Guide के मुताबिक, जुनीट बृहस्पति माइग्रेशन में सहायता के लिए कुछ जुनीट 4 नियमों के लिए पिछड़ा संगतता प्रदान करता है।जुनीट 5 में बाहरी संसाधन और अस्थायी फ़ोल्डर के बराबर क्या है?

ऊपर बताए अनुसार, जुनीट बृहस्पति जुनीट 4 नियमों का मूल रूप से समर्थन नहीं करेगा और नहीं करेगा। हालांकि, जुनीट टीम को पता चलता है कि कई संगठनों, विशेष रूप से बड़े लोगों के पास कस्टम नियमों सहित बड़े जुनीट 4 कोडबेस होने की संभावना है। इन संगठनों की सेवा करने और क्रमिक प्रवासन मार्ग को सक्षम करने के लिए जुनीट टीम ने जुनीट बृहस्पति के भीतर जुनीट 4 नियमों के चयन का समर्थन करने का निर्णय लिया है।

गाइड कहना है कि नियमों में से एक ExternalResource है, जो TemporaryFolder के लिए एक माता पिता है पर चला जाता है।

हालांकि, गाइड दुर्भाग्यवश यह नहीं कहता कि माइग्रेशन पथ क्या है, या नए जुनीट 5 परीक्षण लिखने वालों के बराबर क्या है। तो हमें क्या उपयोग करना चाहिए?

उत्तर

1

Interesting article by author of TemporaryFolderExtension for JUnit5

और

his code repo on github

JUnit5.0.0 में सामान्य रूप से जारी तो चलो वे प्रायोगिक सामग्री उत्पादन के लिए तैयार करने के लिए उनका ध्यान बारी आशा अब है।

इस बीच, ऐसा लगता है TemporaryFolder नियम अब भी JUnit5 के साथ काम करेंगे docs

उपयोग करें:

@EnableRuleMigrationSupport 
public class MyJUnit5Test { 

और इस:

<dependency> 
    <groupId>org.junit.jupiter</groupId> 
    <artifactId>junit-jupiter-migrationsupport</artifactId> 
    <version>5.0.0</version> 
</dependency> 
0

जहां तक ​​मैं समझ गया, वहाँ हो सकता है ExternalResource से जुआनिट 5 के बराबर एक मैपिंग में से कोई भी नहीं। अवधारणाएं बस फिट नहीं होती हैं। JUnit4 में, ExternalResource मूल रूप से आपको before और after कॉलबैक देता है, लेकिन नियम के भीतर, आपके पास before और after वास्तव में इसका अर्थ है कि आपके पास कोई नियंत्रण नहीं है। आप इसे @Rule या @ClassRule के साथ उपयोग कर सकते हैं।

जुनीट 5 में, विस्तार विशिष्ट extension points में हुक करने के लिए परिभाषित किया गया है और इस प्रकार 'कब' अच्छी तरह से परिभाषित किया गया है।

अवधारणाओं में एक और अंतर यह होगा कि आपके पास जुनीट 4 नियमों में एक राज्य हो सकता है, लेकिन आपके JUnit5 एक्सटेंशन में कोई राज्य नहीं होना चाहिए। इसके बजाय, सभी राज्य execution context पर जाना चाहिए।

public abstract class ExternalResourceExtension 
    implements BeforeTestExecutionCallback, AfterTestExecutionCallback { 
    @Override 
    public void beforeTestExecution(ExtensionContext context) throws Exception { 
     before(context); 
    } 

    @Override 
    public void afterTestExecution(ExtensionContext context) throws Exception { 
     after(context); 
    } 

    protected abstract void before(ExtensionContext context); 

    protected abstract void after(ExtensionContext context); 
} 
:

फिर भी, यहाँ एक विकल्प मैं के साथ आया था, जहां before और after प्रत्येक परीक्षा पद्धति से संबंधित है है

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