IntelliJ 2017.2
का उपयोग करके मेरे प्रोजेक्ट को java8 + Junit5 पर माइग्रेट करने का प्रयास कर रहा है
मैंने junit-jupiter-api
संस्करण 5.0.0-M6
जोड़ा है
और junit-platform-launcher
संस्करण 1.0.0-M6
परियोजना संरचना एक डिफ़ॉल्ट मावेन सम्मेलन है src/test/java
इस बारे में कुछ लेख मिले लेकिन उनमें से किसी ने भी मेरी समस्या का समाधान नहीं किया।
यह कंसोल में अच्छी तरह से चलता है, मुझे लगता है कि यह IntelliJ डिफ़ॉल्ट जुनीट रनर के साथ कुछ करना है, या मुझे कुछ निर्भरताएं याद आ रही हैं?
जब मैं एक एकल परीक्षण वर्ग चलाता हूं तो सब ठीक काम करता है लेकिन जब मैं निर्देशिका का चयन करता हूं और Run all 'Tests' in Java
जैसे मैं करता था तो मुझे कुछ त्रुटियां आती हैं।
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.TestDescriptor.pruneTree()V
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryFiltersByType(Ljava/lang/Class;)Ljava/util/List;
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.TestDescriptor.pruneTree()V
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryFiltersByType(Ljava/lang/Class;)Ljava/util/List;
नोट: मैंने अभी तक कोई परीक्षण माइग्रेट नहीं किया है, सभी जूनिट 4 सिंटैक्स हैं।
4 जवाब
विशिष्ट निर्भरताएँ जोड़ने से समस्या हल हो जाती है।
नोट: इंटेलीज को 2017 से ऊपर अपडेट करें।
OXYGEN यदि आप ग्रहण का उपयोग कर रहे हैं।
निर्भरता के नीचे Junit5 पैरामीट्रिज्ड परीक्षण सक्षम होते हैं जिनका उपयोग DataProvider के बजाय किया जा सकता है।
"org.junit.jupiter:junit-jupiter-params:5.0.0"
//for JUnit5 parametrized tests.
जूनिट5 एपीआई।
"org.junit.jupiter:junit-jupiter-api:5.0.0"
//JUnit5 API
यदि आप सिंटैक्स और आयात को बदले बिना विरासती JUnit4 परीक्षण चलाना चाहते हैं, तो इसकी आवश्यकता है।
"org.junit.vintage:junit-vintage-engine:4:12.0"
//for legacy JUnit4 tests
संपादित करें: 07/2018 विंटेज रनर के संस्करण को बृहस्पति संस्करण से मिलाएं
यदि आप नए सिंटैक्स और आयात के साथ JUnit5 परीक्षण चलाना चाहते हैं तो इसकी आवश्यकता है।
"org.junit.jupiter:junit-jupiter-engine:5.0.0"
//for JUnit5 tests
java.lang.NoSuchMethodError: org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryFiltersByType(Ljava/lang/Class;)Ljava/util/List;
लॉन्चर.
"org.junit.platform:junit-platform-launcher:1.0.0
//to handle default launcher
थ्रेड में अपवाद "मुख्य" java.lang.NoSuchMethodError: org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()Ljava/lang/ClassLoader;
अतिरिक्त जानकारी कैसे स्थापित करें JUnit5
ग्रैडल के संस्करण 4.6 के बाद से, अब प्लगइन्स की कोई आवश्यकता नहीं है ग्रैडल जूनिट5 का मूल रूप से समर्थन करता है: और विंटेज रनर का संस्करण अब जुनीट 5 संस्करण के समान है।
dependencies {
testImplementation "org.junit.jupiter:junit-jupiter-params:$junitVersion"
testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$junitVersion"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion"
}
test {
useJUnitPlatform {
includeEngines 'junit-jupiter', 'junit-vintage'
}
}
मुझे जुनीट के संस्करण को 5.4.0 से 5.3.2 के लिए बदलना है और यह एक आकर्षण की तरह काम करता है।
एंड्रॉइड स्टूडियो के लिए यदि आप मुठभेड़ करते हैं
org.junit.jupiter:junit-jupiter-api . को हल करने में असमर्थ
अपनी फ़ाइल पर जाएँ ..\AndroidStudioProjects\Pets\app\build.gradle
निर्भरता अनुभाग में
कोड की इन दो पंक्तियों को इनपुट करें
testImplementation 'junit:junit:4.12'
androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0-M4'
मैं जिस कॉन्फ़िगरेशन का उपयोग करता हूं वह नीचे है।
विंटेज इंजन निर्भरता केवल तभी आवश्यक है जब आप जूनिट 4 परीक्षणों का भी उपयोग कर रहे हों।
पैरामीटरयुक्त परीक्षणों का उपयोग करने पर ही बृहस्पति पैराम्स की आवश्यकता होती है।
<properties>
<junit.version>5.0.0</junit.version>
</properties>
...
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>4.12.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।