কমান্ড-লাইন ব্যবহার করে JUnit ক্লাস থেকে একক পরীক্ষা চালান


97

আমি এমন একটি পদ্ধতির সন্ধান করার চেষ্টা করছি যা আমাকে কেবলমাত্র কমান্ড-লাইন এবং জাভা ব্যবহার করে একটি JUnit ক্লাস থেকে একক পরীক্ষা চালানোর অনুমতি দেবে।

নিম্নলিখিতটি ব্যবহার করে ক্লাস থেকে পুরো সেট পরীক্ষা চালাতে পারি:

java -cp .... org.junit.runner.JUnitCore org.package.classname

আমি সত্যিই যা করতে চাই তা হ'ল:

java -cp .... org.junit.runner.JUnitCore org.package.classname.method

বা:

java -cp .... org.junit.runner.JUnitCore org.package.classname#method

আমি লক্ষ্য করেছি যে JUnit টীকাগুলি ব্যবহার করে এটি করার উপায় থাকতে পারে তবে আমি আমার পরীক্ষার ক্লাসগুলির উত্স হাতে না নিয়ে পরিবর্তন করতে পছন্দ করব (এটি স্বয়ংক্রিয় করার চেষ্টা করে)। আমি এটিও দেখেছি মাভেনের এটি করার একটি উপায় থাকতে পারে তবে সম্ভব হলে আমি মাভেনের উপর নির্ভর করে এড়াতে চাই।

তাই আমি ভাবছি যে এটি করার কোনও উপায় আছে কিনা?


মূল বিষয়গুলি যা আমি খুঁজছি:

  • JUnit পরীক্ষা ক্লাস থেকে একটি পরীক্ষা চালানোর ক্ষমতা
  • কমান্ড লাইন (JUnit ব্যবহার করে)
  • পরীক্ষার উত্সটি পরিবর্তন করা থেকে বিরত থাকুন
  • অতিরিক্ত সরঞ্জাম ব্যবহার করা এড়িয়ে চলুন

4
শীতল, অন্য "ইউনিক্স আমার আইডিই" টাইপ উত্সাহী। আমি কোনও সম্পাদকের আইডিই ব্যবহার করতে পছন্দ করি (বিশেষত নেটবিন্সের জন্য ভিআইএম প্লাগইন সহ) তবে আমি সম্মত হই যে ছোট ধারালো সরঞ্জামগুলি যা "চিরকালের জন্য" স্থায়ী হয় এবং যথেচ্ছ কনফিগারেশনে একত্রিত হতে পারে, প্রায়শই ধারাবাহিকতার ছদ্মবেশী বৈশিষ্ট্যগুলি প্রত্যাখ্যান করার চেয়ে ভাল are আইডিই ব্র্যান্ড এবং সংস্করণগুলির সিরিজ। তোমার জন্য ভালো!
রোবপ্রোগ

4
আপনি বলেছিলেন যে আপনি খোদাই করা এড়াতে চেয়েছিলেন। যে কেউ maven
পুনর্বার

উত্তর:


79

মোটামুটি সহজেই আপনি একটি কাস্টম তৈরি করতে পারেন, খালি গায়ে জুনিত রানার। এখানে একটি যা ফর্মটিতে একক পরীক্ষার পদ্ধতি চালাবে com.package.TestClass#methodName:

import org.junit.runner.JUnitCore;
import org.junit.runner.Request;
import org.junit.runner.Result;

public class SingleJUnitTestRunner {
    public static void main(String... args) throws ClassNotFoundException {
        String[] classAndMethod = args[0].split("#");
        Request request = Request.method(Class.forName(classAndMethod[0]),
                classAndMethod[1]);

        Result result = new JUnitCore().run(request);
        System.exit(result.wasSuccessful() ? 0 : 1);
    }
}

আপনি এটি এই মত প্রার্থনা করতে পারেন:

> java -cp path/to/testclasses:path/to/junit-4.8.2.jar SingleJUnitTestRunner 
    com.mycompany.product.MyTest#testB

জাবিট উত্সটিতে তাত্ক্ষণিকভাবে দেখার পরে আমি একই সিদ্ধান্তে পৌঁছেছি যে আপনি যে ইউনিত এটিকে স্থানীয়ভাবে সমর্থন করেন না। আইডিইগুলির সকলের কাস্টম জুনিত একীকরণ রয়েছে যেহেতু আপনাকে অন্যান্য ক্রিয়াকলাপের সাথে কার্সারের অধীনে পরীক্ষা পদ্ধতি চালানোর অনুমতি দেয় তাই এটি আমার পক্ষে কখনও সমস্যা হয়নি never আমি সরাসরি কমান্ড লাইন থেকে JUnit পরীক্ষা পরিচালনা করি না; আমি সর্বদা আইডিই বা বিল্ড টুল (এন্ট, ম্যাভেন) কে এটি যত্ন নিতে দিয়েছি। বিশেষত যেহেতু ডিফল্ট সিএলআই এন্ট্রি পয়েন্ট (JUnitCore) পরীক্ষার ব্যর্থতা (গুলি) তে একটি শূন্য-বহির্গমন কোড ব্যতীত অন্য কোনও ফলাফলের ফলাফল দেয় না।

দ্রষ্টব্য: JUnit সংস্করণ> = 4.9 এর জন্য আপনার ক্লাসপথে হ্যামরেস্ট লাইব্রেরি প্রয়োজন


4
প্রকৃতপক্ষে, আমি মনে করি মনে হয় নিখরচায় প্রত্যাশার বর্ণনা দেওয়ার সাথে সাথে প্রতিটি পরীক্ষার (পরীক্ষামূলক, সংজ্ঞায়িত) বার্তাটি যখন পরীক্ষায় দৃ failed়বিশ্বাস ব্যর্থ হয় তখন লগটিতে পুরো স্ট্যাক ট্রেস পাওয়া যায় remember কাজের আশেপাশের জন্য ধন্যবাদ।
রোবগ্রোগ

49

আমি আমার প্রকল্পটি তৈরি করতে মাভেন ব্যবহার করি এবং জুনিট পরীক্ষা চালানোর জন্য শিওরফায়ার ম্যাভেন প্লাগইন ব্যবহার করি। যদি আপনার এই সেটআপ থাকে তবে আপনি তা করতে পারেন:

mvn -Dtest=GreatTestClass#testMethod test

এই উদাহরণে, আমরা ক্লাস "গ্রেটটেষ্টক্লাস" এর মধ্যে কেবল "টেস্টমেথড" নামে একটি পরীক্ষা পদ্ধতি চালাই run

আরও তথ্যের জন্য, http://maven.apache.org/surefire/maven-surefire-plugin/example/single-test.html দেখুন


-2

আমরা ইন্টেলিজিকে ব্যবহার করেছি এবং এটি বের করার চেষ্টা করার জন্য বেশ কিছুটা সময় ব্যয় করেছি।

মূলত, এটিতে 2 টি পদক্ষেপ জড়িত:

পদক্ষেপ 1: পরীক্ষা ক্লাস সংকলন

% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java

দ্বিতীয় ধাপ: পরীক্ষা চালান

% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest


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