কমান্ড লাইন থেকে JUnit পরীক্ষার মামলাগুলি কীভাবে চালানো যায়


333

আমি কমান্ড লাইন থেকে JUnit পরীক্ষা মামলা চালাতে চাই। কিভাবে আমি এটি করতে পারব?


অনুরূপ অ্যান্ড্রয়েড junit প্রশ্ন: stackoverflow.com/q/11144466/611007
n611x007

অ্যান্ড্রয়েড ডক্স: একটি ডিভাইস বা এমুলেটরটিতে পরীক্ষা চলছে (কমান্ড লাইন থেকে)। ( andreea.sandu এর মাধ্যমে )
n611x007

এ JUnit 5 উত্তর stackoverflow.com/a/52373592/1431016
Sormuras

javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.javaআমার জন্য কাজ। শেষের বিন্দুটি নোট করুন - এটি গুরুত্বপূর্ণ!
পার্সিকার

উত্তর:


274

জন্য JUnit 5.x এটা:

java -jar junit-platform-console-standalone-<version>.jar <Options>

সংক্ষিপ্ত এ সারসংক্ষেপ খুঁজুন https://stackoverflow.com/a/52373592/1431016 এবং সম্পূর্ণ বিবরণের https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher

জন্য JUnit 4.x এটা সত্যিই আছে:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

তবে আপনি JUnit 3.X ব্যবহার করছেন তবে ক্লাসের নামটি পৃথক:

java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]

আপনার ক্লাসপথে আপনার ক্লাসের ফাইলগুলির সাথে আরও জেআর বা ডিরেক্টরি যুক্ত করতে হবে এবং সেমিকোলন (উইন্ডোজ) বা কোলোন (ইউএনআইএক্স / লিনাক্স) দিয়ে আলাদা করতে হবে। এটি আপনার পরিবেশের উপর নির্ভর করে।

সম্পাদনা: আমি উদাহরণ হিসাবে বর্তমান ডিরেক্টরি যুক্ত করেছি। আপনার পরিবেশ এবং আপনি কীভাবে আপনার অ্যাপ্লিকেশনটি তৈরি করেন তার উপর নির্ভর করে (বিন / বা বিল্ড / বা এমনকি আমার_প্লিকেশন.জার ইত্যাদি হতে পারে)। নোট করুন জাভা 6+ ক্লাসপথে গ্লোব সমর্থন করে, আপনি এটি করতে পারেন:

java -cp lib/*.jar:/usr/share/java/junit.jar ...

আশা করি এটা সাহায্য করবে. পরীক্ষা লিখুন! :-)


@ ইজাপ কোনও প্রোগ্রাম JUnit4 বা JUnit3 ব্যবহার করছে কিনা তা প্রোগ্রামারিকভাবে নির্ধারণ করার জন্য কোনও ধারণা?
Goaler444

2
Class.forName আমি অনুমান করি। বেশ কয়েক বছর যাবত আমি জাভাতে শেষবারের মতো প্রোগ্রামিং
করছিলাম

এবং যদি আপনি অ্যান্ড্রয়েড ব্যবহার করছেন?
n611x007

1
"-সিপি" আর্গুমেন্টের জন্য ডকুমেন্টেশন (যেমন CLASSPATH) এখানে (জাভা 7, ইউনিক্স) এবং এখানে (টিউটোরিয়াল) এবং এখানে (জাভা 8, ইউনিক্স) এবং এখানে (জাভা 8, উইন্ডোজ) রয়েছে । দৃশ্যত ক্লাসপথের ওয়াইল্ডকার্ডগুলি এখন সমর্থিত।
ডেভিড টনহোফার 8:58

1
Downvote। JUnit 4.x এর জন্য এটি ঠিক নয়। আপনার নির্দেশাবলী "ক্লাস সন্ধান করতে পারে না: [পরীক্ষার শ্রেণীর নাম]" দেয় যখন এমনকি [পরীক্ষার শ্রেণীর নাম] ক্লাসপথে থাকে।
ফিলিপ রেগো

117

মাভেন উপায়

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

mvn clean test

অথবা আপনি নীচের মত একটি নির্দিষ্ট পরীক্ষা চালাতে পারেন

mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod

আপনি যদি লক্ষ্য \ শিফারফায়ার-রিপোর্টস ফোল্ডারে ফাইলগুলি রিপোর্ট করার পরিবর্তে কনসোলে স্ট্যাক ট্রেস (যদি থাকে তবে) দেখতে চান তবে ব্যবহারকারীর সম্পত্তি শিফারফায়ার করুন। উদাহরণ স্বরূপ:

mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false

গ্রেডল ওয়ে

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

gradle test

অথবা আপনি নীচের মত একটি নির্দিষ্ট পরীক্ষা চালাতে পারেন

gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod

আপনি যদি আরও তথ্য চান, আপনি - স্ট্যাকট্রেস, বা --info, বা --debug এর মত বিকল্পগুলি বিবেচনা করতে পারেন।

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

gradle test --info

আপনি যদি সামগ্রিক পরীক্ষার ফলাফলগুলি দেখতে চান তবে আপনি ব্রাউজারে প্রতিবেদনটি খুলতে পারেন, উদাহরণস্বরূপ (উবুন্টুতে গুগল ক্রোম ব্যবহার করে এটি খুলুন):

google-chrome build/reports/tests/index.html

পিঁপড়া উপায়

একবার আপনি আপনার পিঁপড়া বিল্ড ফাইল বিল্ড.এক্সএমএল সেট আপ করার পরে, আপনি নীচের মতো কমান্ড লাইন থেকে আপনার JUnit পরীক্ষার কেসগুলি চালাতে পারেন:

ant -f build.xml <Your JUnit test target name>

পিপীলিকা বিল্ড ফাইলে কীভাবে JUnit পরীক্ষা কনফিগার করতে হয় সে সম্পর্কে আরও জানতে আপনি নীচের লিঙ্কটি অনুসরণ করতে পারেন: https://ant.apache.org/manual/Tasks/junit.html

সাধারণ উপায়

আপনি যদি মাভেন বা গ্রেডল বা পিঁপড়া ব্যবহার না করেন তবে আপনি নিম্নলিখিত পদ্ধতি অনুসরণ করতে পারেন:

প্রথমত, আপনাকে আপনার পরীক্ষার কেসগুলি সঙ্কলন করতে হবে। উদাহরণস্বরূপ (লিনাক্সে):

javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java

তারপরে আপনার পরীক্ষার মামলাগুলি চালান। উদাহরণ স্বরূপ:

java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName

1
আমি পছন্দ করি যে এই উত্তরের একাধিক প্রযুক্তির উদাহরণ রয়েছে, কুডোস!
জোসি থম্পসন

শেষ পদ্ধতির সাহায্যে গ্রোভি পরীক্ষা সম্পর্কে কী?
মিডোরি

1
ভাল সোনার ব্যাজ প্রাপ্য;)
এরিক ডুমিনিল

গ্রেডেল জন্য সংস্করণ জন্য ধন্যবাদ! যশ!
অ্যাডি

52

@ লাজাপ যে উত্তর দিয়েছে তা একটি ভাল সমাধান। তবে আমি যুক্ত করতে চাই যে আপনার যুক্ত করা উচিত। শ্রেণীর পথে, যাতে আপনার বর্তমান ডিরেক্টরিটি বাদ না যায়, ফলস্বরূপ আপনার নিজস্ব ক্লাসগুলি বাদ যায়। কিছু প্ল্যাটফর্মে আমার সাথে এটি ঘটেছে। সুতরাং JUnit 4.x এর জন্য আপডেট হওয়া সংস্করণটি হ'ল:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

1
এটি কি আধা কোলন হওয়ার কথা?
প্যানি

14
@ প্যানি এটি উইন্ডোজের একটি সেমিকোলন। এন * নিক্স পরিবেশে (কমপক্ষে ওএসএক্স এবং সমস্ত লিনাক্স ডিস্ট্রোস আমি ব্যবহার করেছি) আপনি একটি কোলন ব্যবহার করেন।
র্যান্ড_এ্যাক্স

1
@rand_acs কি পরীক্ষার শ্রেণীর নামটির পুরো শ্রেণিবদ্ধ শ্রেণির নাম হওয়া দরকার?
Goaler444

1
@ গোয়ালার 444 হ্যাঁ, আমি সবসময় পুরো নামটি নির্দিষ্ট করে সমস্ত নেমস্পেস সহ ব্যবহার করি।
র্যান্ড_এ্যাক্স

22

নিশ্চিত করুন যে JUnit.jar আপনার ক্লাসপথে রয়েছে, তারপরে কনসোল থেকে কমান্ড লাইন রানারকে অনুরোধ করুন

java org.junit.runner.JUnitCore [পরীক্ষার শ্রেণীর নাম]

রেফারেন্স: জুনিট এফএকিউ


4
আপনার প্রকল্পের বাকী শ্রেণিপথও সেট আপ করতে হবে।
থিলো

এটি কেবল "শ্রেণি সন্ধান করতে পারে নি: [পরীক্ষার শ্রেণীর নাম]" দেয় যদিও [পরীক্ষার শ্রেণীর নাম] ক্লাসপথে থাকে।
ফিলিপ রেগো

19

JUnit 4.12 এর সাথে নিম্নলিখিতগুলি আমার পক্ষে কার্যকর হয়নি:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

স্পষ্টতই , JUnit 4.11 থেকে আপনার ক্লাসপথে অন্তর্ভুক্ত করা উচিত hamcrest-core.jar:

java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]

JUnit 4.12 নিয়ে একই সমস্যা ছিল। অনুরূপ সমাধান নিয়ে এসেছিল, কিন্তু এটি আমার পক্ষে কাজ করে না, JUnitCore লোড করতে ব্যর্থ হয়েছিল। ক্লাসপথে হ্যামক্রিস্ট-কোর.জারকে অন্তর্ভুক্ত করার প্রয়োজন না হওয়ায় আমি মূলত JUnit 4.8.2 এ চলেছি।
ভ্লাদিমির নাজারেঙ্কো

নিশ্চিত হয়ে গেছে যে এটি অবশ্যই ইউএনআইটি 4.12 দিয়ে করা উচিত। +1 টি।
রাইরিং 16'17

এটি আমার পক্ষে কাজ করেছে:java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
রাফি খ্যাচডৌড়িয়ান

11

উইন্ডোজ এটি হয়

java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass [ক্লাস এক্সটেনশন ছাড়াই পরীক্ষার শ্রেণীর নাম]

উদাহরণস্বরূপ: c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...এবং আরও, যদি কারও একাধিক পরীক্ষার ক্লাস থাকে।

-cp শ্রেণীর পথ বোঝায় এবং বিন্দু (।) বিদ্যমান শ্রেণিপথকে উপস্থাপন করে যখন আধা কোলন (;) অতিরিক্ত প্রদত্ত জারটিকে ক্লাসপথে সংযোজন করে, যেমন উপরোক্ত উদাহরণে জুনিট -৪.৮.২ এখন জুনিতকোড় শ্রেণি চালানোর জন্য ক্লাসপথে পাওয়া যায় যে এখানে আমরা আমাদের পরীক্ষার ক্লাসগুলি কার্যকর করতে ব্যবহার করেছি।

উপরে কমান্ড লাইন স্টেটমেন্ট আপনাকে কমান্ড প্রম্পট (অর্থাত্ এমএসডোস) থেকে জুনিট (সংস্করণ 4+) পরীক্ষা করতে সহায়তা করে।

দ্রষ্টব্য: JUnitCore জুনিট পরীক্ষা সম্পাদন করার জন্য একটি মুখোমুখি, এই মুখটি জুনিটের 4+ সংস্করণে অন্তর্ভুক্ত রয়েছে।


আপনার উত্তরটি খুব সংক্ষেপে ব্যাখ্যা করুন।
মোহিত জৈন

আমি আপনার উত্তরটি সংক্ষিপ্ত রাখতে বলিনি। আমি কিছু ব্যাখ্যা যোগ করার জন্য অনুরোধ করেছি (কমপক্ষে একটি সংক্ষিপ্ত ব্যাখ্যা)। আপনার উত্তরটি কীভাবে কাজ করে তা বোঝানো ভাল অনুশীলন। পাঠকরা এটি বুঝতে পারে, এটি পছন্দ করে, এটি upvote।
মোহিত জৈন

সুতরাং আমি যদি একটি পরিপূরক পরীক্ষার জার এবং ভ্যানিলা জুনিট জারে থাকি, আইডির কিছুটা আসলে কাজ করার জন্য জাভা-সিপি কমান্ডে থাকা উভয়কেই থাকতে হবে? একটি কমান্ড লাইনে এই সব করা আছে কাছাকাছি উপায় আছে যাতে আমি বেশি জিনিস টাইপ না করতে?
Ungeheuer

5

প্রকৃতপক্ষে আপনি জুনিট পরীক্ষাকে চালনযোগ্য জারও বানাতে পারেন এবং রান্নেবল জারটিকে জাভা-জার হিসাবে কল করতে পারেন


2
ইক্লিপসে, আপনার JUnit প্রকল্পের ডানদিকে ক্লিক করুন -> রফতানির উপর ক্লিক করুন -> জাভা-> রান্নেবল জার ফাইলটি চয়ন করুন
ইন্দ্রনীল

4

যদি আপনার প্রকল্পটি মাভেন-ভিত্তিক হয় আপনি পরের কমান্ডটি ব্যবহার করে মডিউল 'মাই-মডিউল' এর সাথে সম্পর্কিত টেস্ট-শ্রেণীর কাস্টম টেস্ট থেকে সমস্ত পরীক্ষা পদ্ধতি চালাতে পারেন:

mvn clean test -pl :my-module -Dtest=CustomTest

অথবা পরের আদেশটি ব্যবহার করে পরীক্ষা-শ্রেণীর কাস্টম টেস্ট থেকে কেবল 1 টি পরীক্ষা-পদ্ধতি মাইমথোড চালান:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod

এই ক্ষমতা জন্য আপনি ম্যাভেন surefire প্লাগইন v.2.7.3 + এবং Junit 4. আরো বিস্তারিত প্রয়োজন এখানে হয়: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html


4

ব্যক্তিগতভাবে আমি এটি করতে ম্যাভেন নিশ্চিতফায়ার জুনট রানার ব্যবহার করব।


0

বিকল্পভাবে আপনি জুনিটকোর ক্লাসে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

আপনার জাভা ফাইল থেকে (অনুরোধ, শ্রেণি ক্লাস এবং রানার সহ) চালান বা রানক্লাসগুলি চালান।


-1

আপনি যদি পিপীলিকা ভিত্তিক প্রজেক্ট করেন তবে কনসোল থেকে আপনার এমন কিছু করা উচিত:

ant test

যদি এটি কাজ না করে তবে আপনার প্রকল্পটি পিঁপড়া ভিত্তিক হয় তবে আপনি প্রকল্পের ant -pমূল লক্ষ্যগুলি তালিকাভুক্ত করতে চালাতে পারেন ।


2
প্রশ্নটির পিঁপড়ের সাথে কোনও সম্পর্ক নেই
এপ্রুয়া

3
সে কারণেই আমি বলেছিলাম "যদি আপনার প্রকল্পটি পিঁপড় ভিত্তিক হয়"। এও নোট করুন যে ওপি পিঁপড়া সম্পর্কে জানেন না।
চেরোভিম

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