ম্যাভেনের সাথে একটি একক পরীক্ষা পদ্ধতি চালান


519

আমি জানি আপনি একটি নির্দিষ্ট ক্লাসে সমস্ত পরীক্ষা চালাতে পারেন:

mvn test -Dtest=classname

তবে আমি একটি পৃথক পদ্ধতি চালাতে চাই এবং -পরিমানা = শ্রেণীকরণ.মোথডনেমটি কাজ করছে বলে মনে হয় না।


3
আমি কীভাবে এটি করতে হয় তা জানতে আগ্রহী হব। যাইহোক, যদি আমি নিজেকে প্রায়শই এটি করতে পেলাম, তবে আমি মনে করি যে পরীক্ষাটি কোনও নিজস্ব শ্রেণিতে বিভক্ত হওয়ার জন্য প্রার্থী হতে পারে, তাই আপনি mvn test -Dtest=classnameবাক্য গঠনটি ব্যবহার করতে পারেন ।
জন পাউলেট 13

আপনি কি কেবল কমান্ড লাইনের মাধ্যমে এটি কীভাবে করবেন তা জানতে চান ?? অথবা কোনও আইডিই (গ্রহন) ব্যবহার করা আপনার পক্ষে কাজ করবে?
দিয়েগো ডায়াস ডেস্ক

1
আমি একটি কমান্ড লাইনের দিকে তাকিয়ে ছিলাম। আমি মনে করি জুনিট গ্রহন প্লাগইন আপনাকে এটি করার অনুমতি দেবে।
বিলমান

আমি ম্যাভেন ১ এর জন্য এটি করেছি। যেমনটি আমি স্মরণ করেছি, এটি জুনিতকে পরিবর্তন করা জড়িত, যা পরীক্ষার ক্লাসটি অন্তর্দর্শনের জন্য দায়ী।
কেডগ্রিগরি

উত্তর:


698

মাভেনে একটি একক পরীক্ষা পদ্ধতি চালানোর জন্য আপনাকে নিম্নলিখিত কমান্ডটি প্রদান করতে হবে:

mvn test -Dtest=TestCircle#xyz test

কোথায় TestCircleপরীক্ষার শ্রেণীর নাম এবং xyzএটি পরীক্ষা পদ্ধতি।

ওয়াইল্ড কার্ডের অক্ষরগুলিও কাজ করে; পদ্ধতির নাম এবং শ্রেণীর নাম উভয়ই।

আপনি যদি একটি বহু-মডিউল প্রকল্পে পরীক্ষা করছেন, পরীক্ষাটি যে মডিউলটির সাথে রয়েছে তা সুনির্দিষ্ট করুন -pl <module-name>

ইন্টিগ্রেশন পরীক্ষার জন্য it.test=...বিকল্প পরিবর্তে ব্যবহার করুন test=...:

mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test

4
"কোন টেস্ট কার্যকর করা হয়নি" ত্রুটিটি ফায়ারফায়ার 2.9
কিওয়ার্টি

15
আমি ঠিক করেছি "কোনও পরীক্ষা কার্যকর হয়নি!" 2.14 এ আপগ্রেড করে:
আলফোনেক্স

54
আপনি যদি কোনও মাল্টি-মডিউল প্রকল্পে পরীক্ষা করছেন তবে আপনাকে পরীক্ষাটি মডিউলটিও নির্দিষ্ট করতে হবে -pl <module-name>
জন

22
-DfailIfNoTests=falseপরীক্ষা ছাড়াই প্রকল্পগুলি এড়িয়ে যেতে ব্যবহার করুন । No Tests Were Executedআপনি যখন রুট প্রকল্প থেকে পরীক্ষা চালানোর চেষ্টা করেন এবং পরীক্ষা ছাড়াই মডিউল থাকে happens
চেরি

4
এই আদেশ কাজ করে !! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test নোট করুন যে "-DTest" শুরু হয় UPPER CASE 'T' দিয়ে।
বিকাশ 11 ই

25

নিশ্চিতফায়ার 2.12 নিয়ে একটি সমস্যা রয়েছে। 2.12 থেকে 2.11 থেকে maven-surefire- প্লাগইন পরিবর্তন করে আমার সাথে এটি ঘটে:

  1. mvn test -Dtest=DesignRulesTest

    ফলাফল:
    [ERROR] org.apache.maven.plugins: maven-surefire-પ્લગઇન: 2.12 : পরীক্ষা (ডিফল্ট-পরীক্ষা) প্রকল্পের পিএমডে কার্যকর করতে ব্যর্থ : কোনও পরীক্ষা কার্যকর করা হয়নি!

  2. mvn test -Dtest=DesignRulesTest

    ফলাফল: [আইএনএফও] --- মেভেন-শিফারফায়ার-প্লাগইন: ২.১১ : পরীক্ষা (ডিফল্ট-পরীক্ষা) @ পিএমডি --- ... নেট.সোর্স.এমপিডি.লং.জাভা.রুলে.ডিজাইন.ডিজাইনআরুলস টেস্ট টেস্ট চালাচ্ছে: ৫ , ব্যর্থতা: 0, ত্রুটিগুলি: 0, এড়িয়ে গেছে: 4, সময় অতিবাহিত হয়েছে: 4.009 সেকেন্ড


5
2.12.1 বা তার পরে আবার কাজ করে।
ইউরেজ

স্থির "কোন পরীক্ষা কার্যকর করা হয়নি!" 2.14
আলফোনক্স

আপনি যদি ব্যবহার করেন @Category(IntegrationTest.class), ব্যবহার করুন -Dit.test=ClassName, না হলে আপনি No tests were executed!সর্বশেষতম প্লাগইন সংস্করণগুলি পেয়ে যাবেন ।
uvsmtid

16

আমি আমার টেস্টএনজি দিয়ে যা করি, (দুঃখিত, জুনিত এটি সমর্থন করে না) পরীক্ষার কেসগুলি হ'ল আমি যে পরীক্ষা চালাতে চাই তার জন্য একটি গ্রুপ নির্ধারণ করতে পারি

@Test(groups="broken")

এবং তারপরে কেবল 'mvn -Dgroups = ভাঙা' চালান।


1
এটি একটি ভাল উত্তর। আমার ক্ষেত্রে, পরীক্ষাটি চালানোর চেষ্টা করেছিল তবে কয়েকটি সিম উপাদান সঠিকভাবে সেট আপ করা হয়নি তাই দেখে মনে হচ্ছে এটি সেটআপ কোডের কিছু অংশও এড়িয়ে চলেছে।
ক্রিস উইলিয়ামস

1
সঠিক। আপনাকে নিজের @ বিপরোনমথোডে গোষ্ঠীগুলি = বিভক্ত করতে হবে, বা @ বিপরোনমথোড (সর্বদা রুন = সত্য) করতে হবে
টুনারঞ্চ

সংকলন ইস্যু পাওয়ায় দয়া করে আমাকে এখানে গোষ্ঠীটি কী তা জানান।
পরমেশ কোরাকাকুতি

14

একক টেস্ট ক্লাসে পদ্ধতিগুলির একটি সেট চলমান সংস্করণ ২.7.৩ সহ আপনি একক টেস্ট শ্রেণিতে কেবল এন পরীক্ষা চালাতে পারবেন।

দ্রষ্টব্য: এটি জুনিট 4.x এবং টেস্টএনজির জন্য সমর্থিত।

আপনাকে অবশ্যই নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করতে হবে

mvn -Dtest=TestCircle#mytest test

আপনি নিদর্শনগুলিও ব্যবহার করতে পারেন

mvn -Dtest=TestCircle#test* test

নিশ্চিতফায়ার ২.১১.১ হিসাবে, আপনি একাধিক পদ্ধতি নির্বাচন করতে পারেন (এই সময়ে JUnit4X, প্যাচগুলি স্বাগত)

mvn -Dtest=TestCircle#testOne+testTwo test

একক পরীক্ষা সম্পর্কে এই লিঙ্কটি দেখুন


2
আমার ক্ষেত্রে আমাকে এমভিএন -ডেস্ট = "টেস্ট সার্কেল # মাই টেস্ট" পরীক্ষার মতো টেস্টক্লাস # পরীক্ষার নামটি দ্বিগুণ উদ্ধৃত করতে হয়েছিল
প্রতীক খাদলোয়া

@ প্রতীকখাদলোয়া কোন ধারণা কীভাবে নির্ভরশীল পরীক্ষার জন্য এটি কাজ করে? বলুন, আমার টেস্টক্লাসে টেস্ট 1 (), টেস্ট 2 (), টেস্ট 3 () পদ্ধতি রয়েছে এবং টেস্ট 2 টেস্ট 1 এর উপর নির্ভর করে। আমি কীভাবে কেবল টেস্ট 2 () চালাতে পারি?
Ziska

3
আমি মনে করি যদি আপনার পরীক্ষার মধ্যে নির্ভরতা থাকে তবে আপনি কিছু ভুল করছেন। প্রতিটি পরীক্ষা অন্যান্য পরীক্ষার চেয়ে স্বতন্ত্র হওয়া উচিত। আপনি তাদের মধ্যে সংযোগ অপসারণ করতে হবে।
প্রতীক খাদলোয়া

11

আপনি নিম্নলিখিত বাক্য গঠন ব্যবহার করে নির্দিষ্ট পরীক্ষা শ্রেণি (এস) এবং পদ্ধতি (গুলি) চালাতে পারেন:

  1. পূর্ণ প্যাকেজ: এমভিএন পরীক্ষা -পরেস্ট = "com.oracle.tests। **"

  2. ক্লাসে সমস্ত পদ্ধতি: এমভিএন পরীক্ষা -পরেস্ট = CLASS_NAME1

  3. একক শ্রেণি থেকে একক পদ্ধতি: এমভিএন পরীক্ষা -পরেস্ট = CLASS_NAME1 # METHOD_NAME1

  4. একাধিক শ্রেণি থেকে একাধিক পদ্ধতি: এমভিএন পরীক্ষা -পরেস্ট = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2


10

এই আদেশ কাজ করে !! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" testনোট করুন যে "-DTest" শুরু হয় UPPER CASE 'T' দিয়ে।


4
না না surefire 2.18.x সঙ্গে কাজ; এটি কেবল সমস্ত পরীক্ষা চালায়।
জনক বান্দারা

4

পরীক্ষা পরামিতি tobrien দ্বারা আপনাকে উল্লেখ করেছে একটি পদ্ধতি একটি ব্যবহার নির্দিষ্ট করার অনুমতি দেবে # পদ্ধতি নাম আগে। এটি JUnit এবং TestNG এর জন্য কাজ করা উচিত। আমি এটি কখনও চেষ্টা করে দেখিনি, কেবল তা শিয়ারফায়ার প্লাগইন পৃষ্ঠায় পড়ুন :

ফাইলের নাম দ্বারা পৃথক পরীক্ষা চালানোর জন্য এই পরামিতিটি নির্দিষ্ট করুন, প্যারামিটারগুলিকে অন্তর্ভুক্ত / বাদ দেয় over আপনি এখানে উল্লেখ করেছেন এমন প্রতিটি প্যাটার্ন ** / $ {পরীক্ষা j। জাভা জাতীয় বিন্যাসিত বিন্যাস তৈরি করতে ব্যবহৃত হবে, যাতে আপনি "foo / MyTest.java" নামে একটি একক পরীক্ষা চালানোর জন্য "-ডেস্ট = মাই টেস্ট" টাইপ করতে পারেন। এই প্যারামিটারটি প্যারামিটারগুলি অন্তর্ভুক্ত / বাদ দেয় এবং টেস্টএনজি স্যুটএক্সএমএল ফাইলস পরামিতিগুলিকে ওভাররাইড করে। ২.7.৩ থেকে আপনি # মাইমাথোড বা # আমার * ইথড যুক্ত করে পরীক্ষায় সীমিত সংখ্যক পদ্ধতি প্রয়োগ করতে পারেন। সি টাইপ "-ডেস্ট = মাই টেস্ট # মাইমেথোদ" জুনিট 4.x এবং টেস্টএনজির জন্য সমর্থিত


3

JUnit এর নতুন সংস্করণগুলিতে বিভাগগুলির রানার রয়েছে: http://kentbeck.github.com/junit/doc/Re कृपयाNotes4.8.html

কিন্তু JUnit এর প্রকাশের পদ্ধতিটি মভেন ভিত্তিক নয়, তাই খাঁটি ব্যবহারকারীদের এটিকে নিজের সংগ্রহস্থলে ম্যানুয়ালি রাখতে হবে।


1
খুশী হলাম। তবে আমি দেখতে পাচ্ছি না কীভাবে এটি প্রশ্নের উত্তর দেয়।
পাস্কাল থিভেন্ট


3

নিশ্চিতফায়ার প্লাগইন সংস্করণ ২.২২.১ (সম্ভবত পূর্ববর্তী) হিসাবে আপনি টেস্টএন.এসএমএল ব্যবহার করার সময় টেস্টনামের সম্পত্তি ব্যবহার করে একক পরীক্ষা চালাতে পারবেন

নিম্নলিখিত টেংটি.এক্সএমএল দেওয়া হয়েছে

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="all-tests">
        <classes>
            <class name="server.Atest"/>
            <class name="server.Btest"/>
            <class name="server.Ctest"/>
        </classes>
    </test>
    <test name="run-A-test">
        <classes>
            <class name="server.Atest"/>
        </classes>
    </test>
    <test name="run-B-test">
        <classes>
            <class name="server.Btest"/>
        </classes>
    </test>
    <test name="run-C-test">
        <classes>
            <class name="server.Ctest"/>
        </classes>
    </test>
</suite> 

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    [...]
    <properties>
        <selectedTests>all-tests</selectedTests>
    </properties>
    [...]
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <suiteXmlFiles>
                    <file>src/test/resources/testng.xml</file>
                </suiteXmlFiles>
                <properties>
                    <property>
                        <name>testnames</name>
                        <value>${selectedTests}</value>
                    </property>
                </properties>
            </configuration>
        </plugin>
    </plugins>
    [...]
</project>

কমান্ড লাইন থেকে

mvn clean test -DselectedTests=run-B-test

আরও পড়ুন - টেংটি ব্যবহার করে ম্যাভেন শিফারফায়ার প্লাগইন


-5

আপনি একটি একক পরীক্ষা ক্লাস চালাতে পারেন, তবে একটি পরীক্ষা ক্লাসের মধ্যে একটি পদ্ধতি নয়। আপনি ক্লাসের পুরো নামটি ক্লাসের সম্পূর্ণরূপে যোগ্য নয় নামটির সাধারণ নামটি ব্যবহার করেন। সুতরাং, যদি আপনার "org.sonatype.test.MyTest" এ পরীক্ষা হয় এবং এটিই আপনি চালাতে চান তবে আপনার কমান্ড লাইনটি দেখতে এই রকম হবে:

mvn test -Dtest=MyTest

আমি একক মডিউল প্রকল্পে পূর্ববর্তী মন্তব্যে বর্ণিত সমাধান পরীক্ষা করেছি, সুতরাং এই মন্তব্যটি যা বলছে তা সত্য নয়।
টনিও

5
2009 সালে এটি সত্য হতে পারে যখন প্রাথমিকভাবে উত্তর দেওয়া হয়েছিল।
উজ্জ্বল

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