मैं जुनीट 4 परीक्षण चलाने में सफल होने के बाद ग्रैंडल के साथ जुनीट 5 का उपयोग करने की कोशिश कर रहा हूं।ग्रैडल के साथ जुनीट 5 का उपयोग कैसे करें?
अपेक्षित परिणाम: टीथ जुनीट 4 टेस्ट ने आउटपुट में एक अच्छा 'पास' दिया और build/reports/tests
में एक HTML रिपोर्ट दी।
वास्तविक परिणाम: के रूप में नीचे JUnit 5 परीक्षण (...) build succesful
के अलावा नहीं उत्पादन कुछ भी करता है, जबकि मैं जानता हूँ कि परीक्षण वास्तव में नहीं चला जाता है के बाद से वहाँ कोई परीक्षण लॉग उत्पादन पारित कर दिया है/छोड़ दिया/विफल रहा है, और में एक fail
डाल परीक्षण सफल बनाता है।
gradle test --info
चल रहा है Skipping task ':testClasses' as it has no actions.
में से अधिकांश मुझे लगता है कि ज्यादातर अप्रासंगिक आउटपुट। आश्चर्यजनक रूप से, यह Executing task ':test'
और Generating HTML test report... Finished generating test html results
और build/test-results/test
में xml के समान है, जबकि xml उत्पन्न नहीं होता है, एचटीएमएल कोई परीक्षण नहीं दिखाता है और कोई त्रुटि नहीं होती है, और परीक्षण वास्तव में नहीं चल रहा है।
क्या मैं भी बहुत दिलचस्प लगता है, कि gradle test --debug
पैदावार
[TestEventLogger] Gradle Test Run :test STARTED
[org.gradle.api.internal.tasks.testing.junit.JUnitDetector] test-class-
scan : failed to scan parent class java/lang/Object, could not find the class file
[TestEventLogger]
[TestEventLogger] Gradle Test Run :test PASSED
जबकि मेरी केवल परीक्षण
fail("test fails");
जो मुझे लगता है कि बहुत ही अजीब होता है!
मेरे निर्माण फ़ाइल
apply plugin: 'java'
test {
dependsOn 'cleanTest' // run tests every time
}
sourceSets {
main {
java {
srcDirs 'src'
}
}
test {
java {
srcDirs 'test'
}
}
}
repositories {
mavenCentral()
}
dependencies {
// when using this, it worked with a junit 4 test
// testCompile 'junit:junit:4.10'
// this should be needed for junit 5 (using M4 is required since IJ 2017.1.2
testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M4")
}
test {
testLogging {
events "passed", "skipped", "failed"
}
}
मेरा परीक्षण है
package mypackage;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class HelloWorldTest {
@Test
public void testHelloWorld(){
assertEquals(2, 1+1, "message");
}
}
मेरे फ़ोल्डर संरचना है, पैकेज mypackage
,
java-template-project
--- src
--- mypackage
--- HelloWorld.java
--- test
--- mypackage
--- HelloWorldTest.java
और इंटेलीजे 2017/01/03, में का उपयोग कर जो मैं मैं उपयोग कर रहा हूं, मॉड्यूल संरचना इस तरह दिखती है
java-template-project
--- java-template-project_main
--- src/mypackage
--- HelloWorld(.java)
--- java-template-project_test
--- test/mypackage
--- HelloWorldTest(.java)
क्योंकि आजकल ग्राडल अपने पैकेज में स्रोत और परीक्षण चाहता है।
मैं
क्या करने की कोशिश की जाहिर है इस इस विषय के बारे पहला सवाल नहीं है, सभी प्रासंगिक सवाल मैंने पाया
Gradle project running jUnit 5 tests in IntelliJ
हैं लेकिन जैसा कि आप देख सकते हैं कि यह है इंटेलिजे के पुराने संस्करणों के लिए, और मैं पहले से ही आईजे 2016.3.3 के लिए सिंटैक्स का उपयोग कर रहा हूं और उत्तर में से एक के अनुसार, एक जुनीट निर्भरता रेखा में, इसलिए यह ठीक होना चाहिए।
Upgrade from JUnit 4 to JUnit 5 in intellij with gradle
लिंक वापस ऊपर सवाल का, और इस Jetbrains blog जो ऊपर प्रश्न के रूप में एक ही पंक्ति का उपयोग करता है करने के लिए लिंक।इसके अलावा के लिए लिंक: निर्भरता के रूप में,,
Integrate JUnit 5 tests results with Intellij test report यह एक शो सवाल में भी
testRuntime("org.junit.vintage:junit-vintage-engine:5.0.0-M1")
जिसमें Why were JUnit Jupiter and JUnit Vintage separated When I Running TestCase in IntelliJ? खैर समझाया गया है, जब मैं यह भाग गया, उत्पादन से पता चला है यह नहीं मिल सका इस संस्करण लेकिन Maven Repository यह एक JUnit 5 के लिए है के अनुसार:
testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M4")
वहाँ जवाब है कि आप बस एल के बाद से इंटेलीजे भीतर परीक्षण चलाने की अनुमति आर्ट संस्करणों में जुनीट 5 का समर्थन है। मुझे पता है, और जब मैं IntelliJ के भीतर से चलाता हूं तो परीक्षण ठीक चलता है। लेकिन मैं ग्रैडल (और ट्रैविस, जिसे निर्भरता प्रबंधन की आवश्यकता है) का उपयोग करना चाहता हूं।
How to capture stdout/stderr in junit 5 gradle test report?
मैं
testCompile("org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3") testCompile("org.junit.jupiter:junit-jupiter-engine:5.0.0-M3")
उपयोग करने की कोशिश लेकिन परिणाम नहीं बदला।
मेरा टेम्पलेट प्रोजेक्ट https://github.com/PHPirates/java-template-project पर स्थित है लेकिन इस प्रश्न में सभी जानकारी आवश्यक होनी चाहिए।
एक ही मुद्दा था। पता चला कि @ org.junit' (Junit4 @Test) की बजाय @Test को 'org.junit.jupiter.api' (Junit5 @Test) से आयात किया जाना चाहिए। – yname