মাভেন JUnit পরীক্ষা চালানোর জন্য খুঁজে পায় না


416

আমার একটি মাভেন প্রোগ্রাম রয়েছে, এটি জরিমানা সংকলন করে। আমি যখন চালনা mvn testকরি তখন এটি কোনও পরীক্ষা চালায় না (TESTs শিরোনামের অধীনে There are no tests to run.)।

আমি একটি সুপার সাধারণ সেটআপ দিয়ে এই সমস্যাটি পুনরায় তৈরি করেছি যা আমি নীচে পাশাপাশি আউটপুটটি অন্তর্ভুক্ত করব যখন যখন চালানো হবে -X

ইউনিট পরীক্ষাগুলি সূর্যগ্রহণ থেকে সূক্ষ্মভাবে চালিত হয় (উভয়ই এর ডিফল্ট জুনিট প্যাকেজ সহ এবং আমি পরিবর্তে জুনে ডাউনলোড করা জুনিট.জার অন্তর্ভুক্ত করি) ven এছাড়াও এমভিএন test-compileসঠিকভাবে পরীক্ষা-ক্লাসের অধীনে ক্লাস তৈরি করে। আমি এটি OSX 10.6.7 এ মাভেন 3.0.2 এবং জাভা 1.6.0_24 সহ চালাচ্ছি।

এখানে ডিরেক্টরি কাঠামো:

/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));
    }
}

এমভিএন-এক্স পরীক্ষার সমাপ্তি:

[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 এর মতো আপনার টেস্টকেসগুলির নামকরণের ফলে পরীক্ষাগুলি নিঃশব্দে কার্যকর করা হবে না e মাভেন পিছনের দিকের সামঞ্জস্যের জন্য এটি করতে পারে না তবে সমস্ত ফাইলে টেস্টকেসগুলি অনুসন্ধান করতে এটি আরও যুক্তিযুক্ত করে।
টোবিয়াস ক্রিমার

8
আমি এটি কখনই জানতাম না - দুটি পরীক্ষা ছিল যা "টেস্ট" দিয়ে শেষ হয়েছিল, এবং ম্যাভেন তাদের চালানো অস্বীকার করেছিল ... "টেস্ট" এ পরিবর্তিত হয়েছে, এবং ললিপপ গিল্ডে আবার সব ঠিক আছে। ধন্যবাদ।
ডেমানিয়াক

2
@ তোবিয়াস নামকরণ কনভেনশন দিয়ে আরোপিত বিপদ সম্পর্কে আপনার বক্তব্যের সাথে আমি একমত। এটি ধরণের এনোটেশন ব্যবহারের দ্বারা নিহিত প্যাটার্নটিও ভেঙে দেয়। টীকাগুলি ব্যবহারের একটি অন্তর্নিহিত ফলাফল হ'ল নির্দিষ্ট টীকা যুক্ত শ্রেণি / পদ্ধতিগুলি অনুসন্ধান করা যায়। আমি আশা করতাম যে মাভেন নামকরণের কনভেনশন সীমাবদ্ধতা রাখেন নি এবং পরিবর্তে যে কোনও ক্লাসে @ টেষ্ট টীকাগত পদ্ধতিগুলি স্ক্যান করার উপর নির্ভর করেছিলেন ।
অঙ্গদ

2
নোট করুন যে নিশ্চিতফায়ার ডকুমেন্টেশনে এখন দাবি করা হয়েছে যে **/*Tests.javaএটি একটি ডিফল্ট অন্তর্ভুক্ত!
গ্যারেথ

11
প্রশ্ন: তাহলে আপনি যদি যাইহোক টেস্ট * কনভেনশন অনুসরণ করতে চান তবে @ টেক্সট দিয়ে কেন টীকায়িত করবেন?
dynex

88

আমি আরও দেখতে পেলাম যে ইউনিট পরীক্ষার কোডটি টেস্ট ফোল্ডারের অধীনে রাখা উচিত, আপনি যদি এটি মূল ফোল্ডারের অধীনে রাখেন তবে এটি পরীক্ষার শ্রেণি হিসাবে স্বীকৃত হতে পারে না। যেমন।

ভুল

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

অধিকার

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

3
থাঙ্ক! এটি এবং ফাইলটিতে পরীক্ষা করার সুযোগ নির্ধারণ করে ( <scope>test<scope>) pom.xmlএটি আমার জন্য করেছিল।
দিনেশজানি

আমি এটির মধ্যে দৌড়েছি, পরীক্ষা বনাম পরীক্ষার জন্য নজর রাখছি।
যথাযথটি

72

মডিউলের প্যাকেজিং সঠিকভাবে ঘোষণা না করা হলে মাভেন টেস্টগুলি খুঁজে না পাওয়ার কারণ হতে পারে Another

সাম্প্রতিক ক্ষেত্রে, কেউ ছিল <packaging>pom</packaging>এবং আমার পরীক্ষা কখনও চালানো হয়নি। আমি এটিকে পরিবর্তন করেছি <packaging>jar</packaging>এবং এখন এটি ঠিক আছে works


4
দুর্দান্ত পরামর্শ! একটি একক-মডিউল মাভেন আর্টিক্টকে একাধিকতে বিভক্ত করার সময় 'অনুলিপি-পেস্ট' এর বিপদগুলি প্রদর্শন করে।
মুরসর

4
আমার ইচ্ছা মেভেন একটি বার্তা মুদ্রিত করেছে - package type is pom - so not running tests- বিকাশকারীদের কিছু ধারণা দেওয়ার জন্য :(
অরুণ অবানাথন

60

হালনাগাদ:

মত @ স্কটিটিউস মন্তব্যগুলিতে বলেছেন, মাভেন শিওরফায়ার ২.২২.০ থেকে শুরু করে নিম্নলিখিতটি যথেষ্ট:

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

5 জুনবিট ব্যবহার করার সময়, আমি একই সমস্যার মধ্যে পড়েছিলাম। জুনেট 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
নোট করুন যে শিয়ারফায়ার ২.২২ এর সাথে, শিল্প surefire-providerবা jupiter-engineনিদর্শনগুলির উপর নির্ভরতা যুক্ত করা উচিত নয় । আমার পরীক্ষাগুলি এগুলি ছাড়া কমপক্ষে ঠিকঠাক বলে মনে হচ্ছে। দেখতে এই উত্তর
স্কটিসিস

এটিও লক্ষণীয় যে এই প্লাগইনটি ব্যবহার org.junit.jupiter.api.Testকরার org.junit.Testসময় আপনাকে অবশ্যই ব্যবহার করতে হবে বা পরীক্ষাগুলি পাওয়া যাবে না।
অস্টিন_স

30

এছাড়াও, চেক যদি আপনার পরীক্ষার শ্রেণীর ডিরেক্টরি (যেমন src / পরীক্ষা / জাভা) সম্পত্তি তালিকাভুক্ত ডিরেক্টরির সাথে সঙ্গতিপূর্ণ <testSourceDirectory>অধীনে আপনার pom.xml মধ্যে <build>সম্পত্তি। আমাকে এটি খুঁজে পেতে কিছুটা সময় নিয়েছে।


13

প্রকল্পটি থাকলে মাভেন আপনার পরীক্ষা চালাবে না <packaging>pom</packaging>

পরীক্ষাগুলি চালানোর জন্য আপনাকে প্যাকেজিংটি জারে (বা অন্য কোনও জাভা আর্টফ্যাক্ট টাইপ) সেট করতে হবে: <packaging>jar</packaging>


12

আমার ক্ষেত্রে এটি জুনিট-ভিনটেজ-ইঞ্জিন যুক্ত করছিল যা এটি ইউনাইট পরীক্ষার পুরানো সংস্করণের সাথে সামঞ্জস্য করে এবং এগুলি চালাতে পারে। আমি JUnit 5 ব্যবহার করছি।

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

আমি মনে করি স্প্রিংবুট কেবল এটি ব্যবহার করে তা অন্তর্ভুক্ত করে। এটি উপলব্ধি করে যে আপনার নিজের চাহিদা অনুযায়ী আপনার নির্ভরতা নির্দিষ্ট করতে হবে। অন্যথায়, আপনি পুরো গ্রন্থাগার আমদানি করবেন যা আপনি ব্যবহার করবেন না।
Duc Tran

12

এই উত্তরগুলির অনেকগুলি অতীতে আমার পক্ষে বেশ কার্যকর ছিল তবে আমি একটি অতিরিক্ত দৃশ্যের যোগ করতে চাই যা আমার কিছুটা সময় ব্যয় করেছে, কারণ এটি ভবিষ্যতে অন্যদের সহায়তা করতে পারে:

পরীক্ষা ক্লাস এবং পদ্ধতিগুলি সর্বজনীন কিনা তা নিশ্চিত করুন।

আমার সমস্যাটি হ'ল আমি আমার আইডিই (ইন্টেলিজ) এর একটি স্বয়ংক্রিয় পরীক্ষার শ্রেণি / পদ্ধতি উত্স বৈশিষ্ট্য ব্যবহার করছিলাম এবং কোনও কারণে এটি সেগুলি প্যাকেজ-প্রাইভেট হিসাবে তৈরি করেছে। আমি এটি আশা করি তার চেয়ে মিস করা আরও সহজ বলে মনে করি।


1
এটি আমারও সমস্যা ছিল, কোনও কারণে ইন্টেলিজ প্যাকেজ-প্রাইভেট হিসাবে টেস্ট তৈরি করছে এবং মাভেন সেগুলি দেখতে পাবে না। ক্লাস পরিবর্তন করা এবং @ টেস্ট পদ্ধতিটি সর্বজনীন তৈরি মাভেনগুলিতে পরীক্ষাগুলি সম্পাদন করে।
অ্যালেক্সস

আমার সমস্যার সমাধান! নোট করুন যে এটি JUnit 5+ এর জন্য প্রযোজ্য নয়। আমি অনুমান করি ইন্টেলিজির কোড জেনারেটর ধরে নেয় আপনি সর্বশেষতম সংস্করণটি ব্যবহার করছেন।
ল্যামিনো

@ লামিনো আমি জুনিট 5 ব্যবহার করছিলাম এবং এটি ব্যর্থ হচ্ছিল কারণ আমার পরীক্ষার পদ্ধতিটি সর্বজনীন ছিল না
সুধীরকুমার

ইন্টেলিজের কাছ থেকে কিছুটা
কৌতূহলপূর্ণ

9

এটি পরীক্ষা করে দেখুন (jUnit - 4.12 এবং অ্যাকলিপস শিফারফায়ার প্লাগইন)

  1. নির্ভরতাগুলিতে POM.xML এ প্রয়োজনীয় jUnit সংস্করণ যুক্ত করুন। প্রকল্পে রফতানি হওয়া প্রয়োজনীয় জারগুলি দেখতে মেভেন -> প্রকল্প আপডেট করুন।
  2. টেস্ট ক্লাসটি এই ফোল্ডারটির এসসিআর / টেস্ট / জাভা এবং সাব-ডিরেক্টরিতে ফোল্ডারের অধীনে থাকে (বা বেস ফোল্ডারটি পিওএম-এ কনফিগার টেস্টসোর্স ডিরেক্টরিতে সুনির্দিষ্ট করা যেতে পারে)। ক্লাসের নামের সাথে টেস্টিং শব্দটি 'টেস্ট' হওয়া উচিত।
  3. পরীক্ষার শ্রেণিতে পরীক্ষার পদ্ধতিতে টেষ্টটি টিকা দেওয়া উচিত

1
এটি জাভা কনফিগারেশন ইস্যুটির বেশি, তবে পরীক্ষার ক্লাসটি সঠিকভাবে নামকরণ এবং টেস্ট ডিরেক্টরিটিকে টেস্ট ডিরেক্টরিতে এসসিআর অধীনে রাখার পাশাপাশি, পরীক্ষার শ্রেণীর প্যাকেজের নামটি অবশ্যই আপনি যে শ্রেণীর পরীক্ষা করছেন সেটির প্যাকেজের নামের সাথে মিল রাখতে হবে।
পল

2
@ পল ফালস - মাভেন কনভেনশনের অধীনে থাকা সমস্ত ক্লাসsrc/test/java চালাবেন । প্যাকেজ কনভেনশন কাঠামোর জন্য এবং প্যাকেজ-ব্যক্তিগত পদ্ধতিতে পরীক্ষার অ্যাক্সেসের অনুমতি দেওয়ার জন্য।
মাইকেল কে

9

যদি আপনি 'বিমূর্ত' দিয়ে কোনও পরীক্ষা উপস্থাপন করেন তবে এটি ডিফল্ট হিসাবে অগ্রাহ্য করা হবে।


1
maven.apache.org/guides/getting-st সূচিত `` `এবং ডিফল্ট বাদ দেওয়া হয়: * / অ্যাবস্ট্রাক্ট টেস্ট.জভা * / অ্যাবস্ট্রাক্ট টেস্ট কেস.জভা` ``
এন্টোইন মেয়ার

এটিও উপেক্ষা করার মতো মনে হয় */TestAbstractSomeClassName.java
কলিন ক্রাওল

6

এই সমস্যা নিয়ে আমি লড়াই করছি। আমার ক্ষেত্রে আমি সঠিক @ টেস্ট টিকাটি আমদানি করছিলাম না ।

1) @ টেস্টটি org.junit.jupiter.api.Test থেকে এসেছে কিনা তা পরীক্ষা করুন (আপনি জুনিট 5 ব্যবহার করছেন)।

2) জুনিট 5 এর পরিবর্তে @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

আপনার যদি একটি ভাগ করা জাভা / গ্রোভির অ্যাপ্লিকেশন থাকে এবং আপনার গ্রুভী ইউনিট পরীক্ষাগুলি রয়েছে তবে মাভেন কোনও পরীক্ষা খুঁজে পাবেন না। এসসিআর / টেস্ট / জাভা এর অধীনে একটি ইউনিট পরীক্ষা যুক্ত করে এটি ঠিক করা যেতে পারে।


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

যদি আপনার পরীক্ষার শ্রেণীর নামটি স্ট্যান্ডার্ড নামকরণের কনভেনশন অনুসরণ না করে (উপরের @ অ্যাক্স্টাভিট দ্বারা হাইলাইট করা), আপনাকে 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

পরীক্ষার মামলাগুলি না চালানোর আর একটি কারণ আমার কাছে ঘটেছিল - আমার কাছে "পরীক্ষা" নামে একটি সম্পত্তি ছিল সম্পূর্ণ ভিন্ন উদ্দেশ্যে, তবে এটি নিশ্চিত ফায়ার প্লাগইনে হস্তক্ষেপ করে। সুতরাং, দয়া করে এর জন্য আপনার পোমগুলি পরীক্ষা করুন:

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

এবং এটি অপসারণ।


1

আরও একটি টিপ (আগের উত্তরগুলি ছাড়াও):

ইক্লিপসে, আপনার প্রকল্পের বৈশিষ্ট্যগুলিতে যান> ক্লিক করুন Run/Debug Settings:

"এই পৃষ্ঠাটি আপনাকে বর্তমানে নির্বাচিত সংস্থান দিয়ে লঞ্চ কনফিগারেশন পরিচালনা করতে দেয়"

সেখানে আপনি (নতুন ...) যোগ করতে পারেন বা আপনার প্রকল্পে যে কোনও জাবি (জুনিট) পরীক্ষা ( src/test/javaফোল্ডার বা কোর্সের অধীনে) মুছে ফেলতে (মুছুন) করতে পারেন ।


1

যদি আপনি JUnit 4 এ আপনার পরীক্ষা লিখে থাকেন এবং নিশ্চিত ফায়ার প্লাগইনে JUnit 5 নির্ভরতা যুক্ত করেন, তবে আপনার পরীক্ষাগুলি চলবে না।

সেক্ষেত্রে, নিশ্চিত ফায়ার প্লাগইন থেকে জুনিত 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 জুনে আমার জন্য ঠিক কাজ করে worked

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

আমি জুনেট -5 টেস্টের মামলাগুলি মেভেন 3.6.2 এর সাথে চালিয়ে যাচ্ছিলাম এবং এটি সর্বদা টেস্ট রান দেখায় : 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) না হয় তবে উদাহরণস্বরূপ হতে পারে ...

<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 এ, কেবল সেখানে নির্দিষ্ট টেস্টং ফাইলটি নিশ্চিত করুন

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

0

আপনি JUnit5 এর সাথে surfire প্লাগইন 3.x.x + ব্যবহার করেন এবং ভুল করে পরীক্ষার ক্লাসটি বেনিফিট করে যখন এই জাতীয় সমস্যা দেখা দিতে পারে @Test

ব্যবহার করুন: org.junit.jupiter.api.Test(JUnit5) এর পরিবর্তেorg.junit.Test (JUnit5)

দ্রষ্টব্য: আইডিই JUnit4 পরীক্ষার মতো এই wihout সমস্যাগুলি চালাতে পারে কারণ এটি লক্ষ্য করা কঠিন হতে পারে।


0

আরেকটি সহজেই উপেক্ষা করা সমস্যা - আপনার শ্রেণীর ফাইলটিতে জাভা এক্সটেনশান রয়েছে তা নিশ্চিত করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.