मावेन को चलाने के लिए जेयूनेट परीक्षण नहीं मिला


416

मेरे पास एक मावेन कार्यक्रम है, यह ठीक संकलन करता है। जब मैं mvn testइसे चलाता हूं तो कोई परीक्षण नहीं चलता है (TESTs हेडर के तहत There are no tests to run.)।

मैंने इस समस्या को एक सुपर सरल सेटअप के साथ फिर से बनाया है जिसे मैं नीचे शामिल करूँगा और साथ ही साथ आउटपुट भी चलाऊंगा -X

इकाई परीक्षण ग्रहण से ठीक चलता है (दोनों अपने डिफ़ॉल्ट जूनिट पैकेज के साथ और जब मैं इसके बजाय मावेन द्वारा डाउनलोड किए गए junit.jar को शामिल करता हूं)। इसके अलावा mvn test-compileसही ढंग से परीक्षण-कक्षाओं के तहत कक्षा बनाता है। मैं इसे मावेन 3.0.2 और जावा 1.6.0_24 के साथ OSX 10.6.7 पर चला रहा हूं।

यहाँ निर्देशिका संरचना है:

/my_program/pom.xml
/my_program/src/main/java/ClassUnderTest.java
/my_program/src/test/java/ClassUnderTestTests.java

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my_group</groupId>
    <artifactId>my_program</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>My Program</name>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

ClassUnderTest.java:

public class ClassUnderTest {

    public int functionUnderTest(int n) {
        return n;
    }

}

ClassUnderTestTests.java:

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class ClassUnderTestTests {

    private ClassUnderTest o;

    @Before
    public void setUp() {
        o = new ClassUnderTest();
    }

    @Test
    public void testFunctionUnderTest_testCase1() {
        Assert.assertEquals(1, o.functionUnderTest(1));
    }

    @Test
    public void testFunctionUnderTest_testCase2() {
        Assert.assertEquals(2, o.functionUnderTest(2));
    }
}

Mvn -X परीक्षण का अंत:

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.7.1, parent: sun.misc.Launcher$AppClassLoader@5224ee]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test' with basic configurator -->
[DEBUG]   (s) basedir = /Users/aaron/Programs/my_program
[DEBUG]   (s) childDelegation = false
[DEBUG]   (s) classesDirectory = /Users/aaron/Programs/my_program/target/classes
[DEBUG]   (s) disableXmlReport = false
[DEBUG]   (s) enableAssertions = true
[DEBUG]   (s) forkMode = once
[DEBUG]   (s) junitArtifactName = junit:junit
[DEBUG]   (s) localRepository =        id: local
      url: file:///Users/aaron/.m2/repository/
   layout: none

[DEBUG]   (f) parallelMavenExecution = false
[DEBUG]   (s) pluginArtifactMap = {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.7.1:, org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile, org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.7.1:compile, org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.7.1:compile, org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.3:compile, org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile, junit:junit=junit:junit:jar:3.8.1:compile, org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile}
[DEBUG]   (s) printSummary = true
[DEBUG]   (s) project = MavenProject: my_group:my_program:1.0-SNAPSHOT @ /Users/aaron/Programs/my_program/pom.xml
[DEBUG]   (s) projectArtifactMap = {junit:junit=junit:junit:jar:4.8.1:test}
[DEBUG]   (s) redirectTestOutputToFile = false
[DEBUG]   (s) remoteRepositories = [       id: central
      url: http://repo1.maven.org/maven2
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => never]
]
[DEBUG]   (s) reportFormat = brief
[DEBUG]   (s) reportsDirectory = /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG]   (s) session = org.apache.maven.execution.MavenSession@dfbb43
[DEBUG]   (s) skip = false
[DEBUG]   (s) skipTests = false
[DEBUG]   (s) testClassesDirectory = /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG]   (s) testNGArtifactName = org.testng:testng
[DEBUG]   (s) testSourceDirectory = /Users/aaron/Programs/my_program/src/test/java
[DEBUG]   (s) trimStackTrace = true
[DEBUG]   (s) useFile = true
[DEBUG]   (s) useManifestOnlyJar = true
[DEBUG]   (s) workingDirectory = /Users/aaron/Programs/my_program
[DEBUG] -- end configuration --
[INFO] Surefire report directory: /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG] Setting system property [user.dir]=[/Users/aaron/Programs/my_program]
[DEBUG] Setting system property [localRepository]=[/Users/aaron/.m2/repository]
[DEBUG] Setting system property [basedir]=[/Users/aaron/Programs/my_program]
[DEBUG] Using JVM: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-junit4:jar:2.7.1:test (selected for test)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:test (selected for test)
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.7.1/surefire-junit4-2.7.1.jar Scope: test
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: test
[DEBUG] Test Classpath :
[DEBUG]   /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   /Users/aaron/Programs/my_program/target/classes
[DEBUG]   /Users/aaron/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
Forking command line: /bin/sh -c cd /Users/aaron/Programs/my_program && /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/aaron/Programs/my_program/target/surefire/surefirebooter6118081963679415631.jar /Users/aaron/Programs/my_program/target/surefire/surefire4887918564882595612tmp /Users/aaron/Programs/my_program/target/surefire/surefire9012255138269731406tmp

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

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

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.089s
[INFO] Finished at: Mon May 30 12:03:09 EDT 2011
[INFO] Final Memory: 7M/62M
[INFO] ------------------------------------------------------------------------

जवाबों:


667

डिफ़ॉल्ट रूप से मावेन निम्नलिखित नामकरण परंपराओं का उपयोग करता है जब चलाने के लिए परीक्षणों की तलाश में:

यदि आपका परीक्षण वर्ग इन सम्मेलनों का पालन नहीं करता है, तो आपको इसका नाम बदल देना चाहिए या परीक्षण कक्षाओं के लिए किसी अन्य पैटर्न का उपयोग करने के लिए मावेन स्यूफायर प्लगइन को कॉन्फ़िगर करना चाहिए ।


4
मुझे मावेन कॉन्फिगर को बदलने के लिए और अधिक आकर्षक लगता है। यह नामकरण सम्मलेन उपयोगकर्ता को अनपेक्षित रूप से कुछ ख़तरा पैदा करता है। अपने टेस्टकेस को समथिंगटेस्ट 1 की तरह नाम देना, समथिंगस्ट 2 का परिणाम होगा कि परीक्षण चुपचाप निष्पादित नहीं होगा। मैवेन बैकवर्ड संगतता के लिए ऐसा नहीं कर सकता है, लेकिन यह सभी फाइलों में टेस्टकेस की खोज के लिए अधिक तर्क देता है।
टोबियास क्रेमर

8
मुझे यह कभी नहीं पता था - दो मामले थे जो "टेस्ट" के साथ समाप्त हो गए, और मावेन ने उन्हें चलाने से इनकार कर दिया ... उन्हें "टेस्ट" में बदल दिया, और लॉलीपॉप गिल्ड में फिर से सब ठीक है। धन्यवाद।
दानिक

2
@ टोबियास मैं नामकरण सम्मेलन के साथ लगाए गए खतरे के बारे में आपकी बात से सहमत हूं। यह एक प्रकार का एनोटेशन के उपयोग से निहित पैटर्न को भी तोड़ता है। एनोटेशन का उपयोग करने का एक निहित परिणाम यह है कि विशिष्ट एनोटेशन वाले वर्गों / विधियों को खोजा जा सकता है। मुझे उम्मीद होगी कि मावेन ने नामकरण सम्मेलन पर रोक नहीं लगाई थी और इसके बजाय किसी भी वर्ग में @Test एनोटेट तरीकों को स्कैन करने पर भरोसा किया था ।
अंगद

2
ध्यान दें कि अचूक दस्तावेज़ अब दावा करता **/*Tests.javaहै कि एक डिफ़ॉल्ट शामिल है!
गैरेथ

11
प्रश्न: तो फिर आपको @ टेस्ट के साथ एनोटेट क्यों करना है अगर आपको वैसे भी टेस्ट * सम्मेलन का पालन करना है?
डाइनेक्स

88

मैंने यह भी पाया कि यूनिट टेस्ट कोड को टेस्ट फोल्डर के नीचे रखा जाना चाहिए, इसे टेस्ट क्लास के रूप में नहीं पहचाना जा सकता है यदि आप इसे मुख्य फ़ोल्डर में रखते हैं। जैसे।

गलत

/my_program/src/main/java/NotTest.java

सही

/my_program/src/test/java/MyTest.java

3
थैंक यू! यह और फ़ाइल <scope>test<scope>में परीक्षण करने की गुंजाइश सेट ( ) pom.xmlमेरे लिए किया था।
दिनेशर्जनी

मैं इस में भाग गया, परीक्षण बनाम परीक्षण के लिए बाहर देखो। उचित एक परीक्षण है
Bruck Wubete

72

एक और चीज जो मावेन का परीक्षण कर सकती है यदि मॉड्यूल की पैकेजिंग को सही ढंग से घोषित नहीं किया गया है।

हाल ही के एक मामले में, किसी के पास <packaging>pom</packaging>और मेरे परीक्षण कभी नहीं चले। मैंने इसे बदल दिया <packaging>jar</packaging>और अब यह ठीक काम करता है।


4
बहुत बढ़िया सुझाव! एक एकल-मॉड्यूल मावेन विरूपण साक्ष्य को कई में विभाजित करते समय 'कॉपी-पेस्ट' के खतरों को प्रदर्शित करता है।
मौसमी

4
मैं चाहता हूं कि मैवेन ने एक संदेश छापा - package type is pom - so not running tests- डेवलपर्स को कुछ सुराग देने के लिए :(
अरुण अवनाथन

60

अपडेट करें:

@Scottyseus की तरह टिप्पणियों में कहा, मावेन स्योरफायर 2.22.0 से शुरू निम्नलिखित पर्याप्त है:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
</plugin>

JUnit 5 का उपयोग करते समय, मैं उसी समस्या में भाग गया। Maven Surefire को JUnit 5 परीक्षण चलाने के लिए एक प्लगइन की आवश्यकता है। इसे हमारे लिए जोड़ें pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.21.0</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.2.0-M1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.2.0-M1</version>
        </dependency>
    </dependencies>
</plugin>

स्रोत: https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven


मुझे इसके लिए "नहीं मिला" मिल रहा है junit-platform-surefire-provider
आर्य पोरबेटाबाई

2
नोट करें कि अचूक 2.22 के साथ, कलाकृतियों surefire-providerया jupiter-engineकलाकृतियों पर निर्भरता जोड़ना आवश्यक नहीं होना चाहिए । मेरे परीक्षण कम से कम उनके बिना चलने लगते हैं। इस उत्तर को देखें ।
स्कूट्टीसियस

यह भी ध्यान देने योग्य है कि आपको इस प्लगइन का उपयोग org.junit.jupiter.api.Testकरने के बजाय उपयोग करना होगा org.junit.Testया परीक्षण नहीं मिलेंगे।
austin_ce

30

यह भी जांच लें कि क्या आपकी परीक्षण कक्षाएं निर्देशिका (जैसे src / test / java) <testSourceDirectory>आपकी pom.xml में संपत्ति में सूचीबद्ध निर्देशिका से मेल खाती <build>हैं। मुझे लगता है कि खोजने के लिए कुछ समय लिया।


13

यदि परियोजना के पास मावेन आपके परीक्षण नहीं चलाएगा <packaging>pom</packaging>

परीक्षणों को चलाने के लिए आपको पैकेजिंग को जार (या कुछ अन्य जावा आर्टिफैक्ट प्रकार) पर सेट करना होगा: <packaging>jar</packaging>


12

मेरे मामले में यह जूनियर-विंटेज-इंजन को जोड़ रहा था जो इसे JUnit परीक्षणों के पुराने संस्करण के साथ संगत बनाता है और इन्हें चला सकता है। जैसा कि मैं JUnit 5 का उपयोग कर रहा हूं।

<dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <scope>test</scope>
</dependency>

मुझे लगता है कि स्प्रिंगबूट में केवल वही शामिल है जो इसका उपयोग करता है। यह समझ में आता है कि आपको अपनी आवश्यकताओं के अनुसार अपनी निर्भरता को निर्दिष्ट करना होगा। अन्यथा, आप पुस्तकालयों के एक पूरे समूह का आयात करेंगे जिसका आप उपयोग नहीं करते हैं।
डुक ट्रान

12

इनमें से कई उत्तर अतीत में मेरे लिए काफी उपयोगी थे, लेकिन मैं एक अतिरिक्त परिदृश्य जोड़ना चाहूंगा, जिसने मुझे कुछ समय दिया हो, क्योंकि यह भविष्य में दूसरों की मदद कर सकता है:

सुनिश्चित करें कि परीक्षण कक्षाएं और विधियाँ सार्वजनिक हैं।

मेरी समस्या यह थी कि मैं अपने IDE (IntelliJ) के एक स्वचालित परीक्षण वर्ग / विधियों के निर्माण की सुविधा का उपयोग कर रहा था और किसी कारण से इसने उन्हें पैकेज-निजी के रूप में बनाया। मुझे लगता है कि यह आसान होगा कि एक की अपेक्षा में चूक जाए।


1
यही समस्या मेरे पास भी थी, किसी कारण से IntelliJ पैकेज-प्राइवेट के रूप में परीक्षण बना रहा है और मावेन उन्हें नहीं देख सकता है। सार्वजनिक किए गए मावेन परीक्षणों के लिए वर्ग और @Test पद्धति को बदलना।
एलेक्स जेएन

मेरी समस्या का हल! ध्यान दें कि यह JUnit 5+ पर लागू नहीं होता है। मुझे लगता है कि IntelliJ का कोड जनरेटर मानता है कि आप नवीनतम संस्करण का उपयोग कर रहे हैं।
लामिनो

@lamino मैं junit5 का उपयोग कर रहा था और यह विफल हो रहा था क्योंकि मेरी परीक्षा विधि सार्वजनिक नहीं थी
सुधीरकुमार

IntelliJ से थोड़ा
चुटीला

9

जांचें कि (jUnit के लिए - 4.12 और ग्रहण अचूक प्लगइन)

  1. निर्भरता में POM.xml में आवश्यक jUnit संस्करण जोड़ें। मावेन करें -> प्रोजेक्ट में निर्यात किए गए आवश्यक जार को देखने के लिए प्रोजेक्ट को अपडेट करें।
  2. परीक्षण वर्ग फ़ोल्डर src / test / java के अंतर्गत है और इस फ़ोल्डर (या बेस फ़ोल्डर को config testSourceDirectory में POM में निर्दिष्ट किया जा सकता है)। कक्षा के नाम में टेलिंग शब्द 'टेस्ट' होना चाहिए।
  3. टेस्ट क्लास में टेस्ट मेथड में एनोटेशन @ टेस्ट होना चाहिए

1
यह एक जावा कॉन्फिग इश्यू का अधिक है, लेकिन टेस्ट क्लास को ठीक से नाम देने और टेस्ट फाइल को src के तहत टेस्ट डायरेक्टरी में डालने के अलावा, टेस्ट क्लास के पैकेज का नाम उस क्लास के पैकेज के नाम से मेल खाना चाहिए जिसका आप टेस्ट कर रहे हैं।
पॉल

2
@Paul झूठी - मावेन के तहत सम्मेलन से मेल खाने वाले सभी वर्गोंsrc/test/java को निष्पादित करेगा । पैकेज कन्वेंशन संरचना के लिए है और पैकेज-निजी तरीकों तक परीक्षणों की पहुंच की अनुमति देता है।
माइकल के

9

पता चलता है कि अगर आप 'एब्सट्रैक्ट' के साथ एक टेस्ट उपसर्ग करते हैं तो इसे डिफ़ॉल्ट रूप से अनदेखा कर दिया जाएगा।


1
maven.apache.org/guides/getting-started `` `और डिफ़ॉल्ट बहिष्कृत हैं: * / Abstract Test.java * / Abstract TestCase.java` ``
एंटोनी मेयर

यह भी नजरअंदाज करने लगता है */TestAbstractSomeClassName.java
कॉलिन क्रॉल

6

मैं इस समस्या से जूझता हूं। मेरे मामले में मैं सही @ टिप्पणी एनोटेशन आयात नहीं कर रहा था ।

1) की जाँच करें अगर @Test से है org.junit.jupiter.api.Test (यदि आप JUnit 5 का उपयोग कर रहे हैं)।

2) के बजाय Junit5 के साथ @RunWith(SpringRunner.class), का उपयोग करें@ExtendWith(SpringExtension.class)

import org.junit.jupiter.api.Test;

@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application.properties")    
public class CotacaoTest {
    @Test
    public void testXXX() {

    }
}

4

यदि आपके पास एक साझा जावा / ग्रूवी एप्लिकेशन है और आपके पास सभी ग्रूवी यूनिट परीक्षण हैं, तो मावेन को कोई परीक्षण नहीं मिलेगा। इसे src / test / java के तहत एक यूनिट टेस्ट जोड़कर ठीक किया जा सकता है।


4

मेरे पास भी ऐसा ही मुद्दा था, यह पता लगाने के बाद कि परीक्षण की निर्भरता इस मुद्दे का कारण बन रही है। पोम से टेस्टींग निर्भरता को हटाने के बाद (जैसा कि मुझे अब इसकी आवश्यकता नहीं है), यह मेरे लिए ठीक काम करना शुरू कर दिया।

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
        <scope>test</scope>
    </dependency>

4

यदि आपने स्प्रिंग इनिरिज़्रSpring Boot का उपयोग करके एक एप्लिकेशन बनाया है , तो इंटेलीज आइडिया से परीक्षण सही चल रहे हैं। लेकिन, अगर कमांड-लाइन से परीक्षण चलाने की कोशिश की जाती है:

mvn clean test

आप आश्चर्यचकित रह गए होंगे, कि कोई भी परीक्षण नहीं चलाया गया था। मैंने surefire pluginबिना किसी भाग्य के साथ जोड़ने की कोशिश की । उत्तर सरल था: pom.xmlइसमें निम्नलिखित निर्भरता थी:

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
           <exclusion>
              <groupId>org.junit.vintage</groupId>
              <artifactId>junit-vintage-engine</artifactId>
           </exclusion>
        </exclusions>
     </dependency>

बहिष्कार, junit-vintage-engineके साथ पिछड़े संगतता रखने के लिए समर्पित है JUnit 4.x। तो, स्प्रिंग बूट प्रिन्टिज़र के नए संस्करण डिफ़ॉल्ट रूप से इसका समर्थन नहीं करते हैं। बाद में मैंने बहिष्करण को हटा दिया, Mavenपरियोजना के परीक्षणों को देखना शुरू कर दिया।


3

यदि आपके टेस्ट क्लास का नाम स्टैंडर्ड नेमिंग कन्वेंशन का पालन नहीं करता है (जैसा कि ऊपर @axtavt द्वारा हाइलाइट किया गया है), तो आपको pom.xmlमावेन टेस्ट लेने के लिए पैटर्न / क्लास का नाम जोड़ना होगा।

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*_UT.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build> 
...

2
/my_program/src/test/java/ClassUnderTestTests.java

होना चाहिए

/my_program/src/test/java/ClassUnderTestTest.java

मावेन ने पाया कि टेस्ट समाप्त होता है या टेस्ट अपने आप शुरू होता है।

हालाँकि, आप उपयोग कर सकते हैं

mvn surefire:test -Dtest=ClassUnderTestTests.java 

अपने परीक्षण चलाने के लिए।


2

यहाँ सटीक कोड मुझे अपने pom.xml में जोड़ना था:

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>1.2.0-M1</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>5.2.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

और यहाँ मेरी निर्भरताएँ हैं:

    <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.2.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert-core</artifactId>
        <version>2.0M10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-surefire-provider</artifactId>
        <version>1.2.0-M1</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.2.0-M1</version>
    </dependency>
</dependencies>

2

मैं एक ही मुद्दे का सामना करना पड़ा, यह pom.xml में नीचे परिवर्तन द्वारा हल किया गया:

<build>
    <testSourceDirectory>test</testSourceDirectory>

...

में परिवर्तित किया गया:

<build>
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>

1

परीक्षण मामलों के नहीं चलने का एक और कारण मेरे साथ हुआ - मेरे पास पूरी तरह से अलग-अलग उद्देश्यों के लिए "परीक्षण" नामक एक संपत्ति थी, लेकिन यह अचूक प्लगइन के साथ हस्तक्षेप करता था। इस प्रकार, कृपया अपने POMs की जाँच करें:

<properties>
  <test>.... </test>
  ...
</properties>

और इसे हटा दें।


1

एक और टिप (पिछले उत्तरों के अलावा):

ग्रहण में, अपनी परियोजना के गुणों पर जाएँ> क्लिक करें Run/Debug Settings:

"यह पृष्ठ आपको वर्तमान में चयनित संसाधन के साथ लॉन्च कॉन्फ़िगरेशन को प्रबंधित करने की अनुमति देता है"

वहां आप अपने प्रोजेक्ट में ( src/test/javaफ़ोल्डर, या पाठ्यक्रम के तहत) कोई भी JU (JUnit) परीक्षण (नया ...) जोड़ या हटा सकते हैं (हटा सकते हैं )।


1

यदि आपने JUnit 4 में अपने परीक्षण लिखे हैं और JUnit 5 निर्भरता को अचूक प्लगइन में जोड़ा है, तो आपके परीक्षण नहीं चलेंगे।

उस स्थिति में, बस अचूक प्लगइन से JUnit 5 निर्भरता पर टिप्पणी करें:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <!--<dependencies>-->
                <!--<dependency>-->
                    <!--<groupId>org.junit.platform</groupId>-->
                    <!--<artifactId>junit-platform-surefire-provider</artifactId>-->
                    <!--<version>1.0.0</version>-->
                <!--</dependency>-->
                <!--<dependency>-->
                    <!--<groupId>org.junit.jupiter</groupId>-->
                    <!--<artifactId>junit-jupiter-engine</artifactId>-->
                    <!--<version>${junit.version}</version>-->
                <!--</dependency>-->
            <!--</dependencies>-->
        </plugin>

1

निम्नलिखित मेरे लिए जून 5 में ठीक काम किया

https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>
<!-- ... -->
<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.4.0</version>
        <scope>test</scope>
    </dependency>
    <!-- ... -->
</dependencies>
<!-- ... -->

1

मेरे मामले में हम स्प्रिंग बूट में मल्टीमॉडल एप्लिकेशन माइग्रेट कर रहे हैं। दुर्भाग्य से मावेन ने सभी परीक्षणों को अब मॉड्यूल में निष्पादित नहीं किया है। टेस्ट क्लासेस का नामकरण नहीं बदला, हम नामकरण सम्मेलनों का अनुसरण कर रहे हैं।

अंत में यह मदद करता है, जब मैंने surefire-junit47प्लगइन पर निर्भरता को जोड़ा maven-surefire-plugin। लेकिन मैं समझा नहीं सकता था, क्यों, यह परीक्षण और त्रुटि थी:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
  <dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-junit47</artifactId>
    <version>${maven-surefire-plugin.version}</version>
  </dependency>
</dependencies>


1

मैं मावेन 3.6.2 के साथ जून -5 टेस्ट केस चला रहा था और यह हमेशा टेस्ट रन: 0 दिखा रहा था

[

INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.547 s
[INFO] Finished at: 2019-12-22T00:03:37-08:00
[INFO] ------------------------------------------------------------------------

जुंट -5 परीक्षण मेरे दिन बचाए मावेन लिंक के तहत नहीं चल रहे हैं।


0

junitArtifactNameयदि उपयोग में JUnit मानक ( junit:junit) नहीं है, लेकिन उदाहरण के लिए ...

<dependency>
    <groupId>org.eclipse.orbit</groupId>
    <artifactId>org.junit</artifactId>
    <version>4.11.0</version>
    <type>bundle</type>
    <scope>test</scope>
</dependency>

0

यदि किसी ने खोज की है और मैं इसे हल नहीं करता हूं, तो मेरे पास विभिन्न परीक्षणों के लिए एक पुस्तकालय था:

<dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${org.junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>

जब मैंने सब कुछ काम किया, तो मुझे उम्मीद है कि मैं इसकी मदद करूंगा:

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

0

मैंने इस कोड का उपयोग किया है

<sourceDirectory>src_controller</sourceDirectory>
  <testSourceDirectory>src_test</testSourceDirectory>

मेरे pom.xml के लिए, बस उस testng फ़ाइल को विशिष्ट रूप में सुनिश्चित करें

<suiteXmlFile>/Users/mac/xxx/xxx/xx.xxxx.xx/xxx.restassured.xx/testng.xml</suiteXmlFile>

0

ऐसी समस्या तब हो सकती है जब आप JUnit5 के साथ surfire plugin 3.x.x + का उपयोग करते हैं और गलती @Testसे JUnit4 से एनोटेशन के साथ टेस्ट क्लास को एनोटेट करते हैं ।

का उपयोग करें: org.junit.jupiter.api.Test(JUnit5) के बजायorg.junit.Test (Junit4)

ध्यान दें: यह नोटिस करना मुश्किल हो सकता है क्योंकि IDE इस wihout समस्याओं को JUnit4 परीक्षण के रूप में चला सकता है।


0

एक और आसानी से अनदेखी की गई समस्या - सुनिश्चित करें कि आपकी कक्षा की फ़ाइल में .java एक्सटेंशन हो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.