java বিশেষ পরীক্ষা প্যাকেজে জুনাইট শ্রেণী বিচ্ছেদ?



unit-testing junit (3)

আমি তাদের পরীক্ষার ক্লাসগুলিকে একই প্যাকেজে রাখি যা তারা পরীক্ষা করছে কিন্তু একটি ভিন্ন উৎস ফোল্ডার বা প্রকল্পে । এই ফর্মে আমার টেস্ট কোড সংগঠিত করার জন্য আমাকে সহজেই কম্পাইল এবং আলাদাভাবে প্যাকেজ করতে দেয় যাতে উত্পাদন জার ফাইলগুলি পরীক্ষা কোড ধারণ করে না। এটি পরীক্ষামূলক কোড প্যাকেজ ব্যক্তিগত ক্ষেত্র এবং পদ্ধতি অ্যাক্সেস করার অনুমতি দেয়।

আমি ক্রাফটাসম্যানের নিবন্ধগুলি পড়ার মাধ্যমে টেস্ট-চালিত ডেভেলপমেন্টের ধারণাগুলি শিখছি (আমার শিরোনামের অধীনে কার্টসম্যান ক্লিক করুন) আমার পূর্ববর্তী প্রশ্নের জবাবে "জুনাইট এবং সঠিক সফটওয়্যার ইঞ্জিনিয়ারিং শিখতে নমুনা প্রকল্প" সুপারিশ করেছে । আমি এটা এতদূর ভালোবাসি!

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

আপনি কিভাবে আপনার JUnit পরীক্ষা ক্লাস এবং আপনার প্রকৃত কোড সংগঠিত করবেন? আমি প্রধানত প্যাকেজের কাঠামোর কথা বলছি, কিন্তু নোটের অন্য কোন ধারণাও সহায়ক হবে।

আপনি org.myname.project.test তে পরীক্ষার ক্লাসগুলি রাখেন। * এবং স্বাভাবিক কোড org.myname.project। * এ? আপনি স্বাভাবিক ক্লাস পাশাপাশি পরীক্ষা ক্লাস রাখা? আপনি ক্লাসের নামগুলি যথোপযুক্ত সৃষ্টির পরিবর্তে পরীক্ষার সাথে পছন্দ করতে চান?

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

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

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


আমি Maven ব্যবহার করি। মেনন প্রচার করে যে গঠন: -

src/main/java/org/myname/project/MyClass.java

src/test/java/org/myname/project/TestMyClass.java

অর্থাৎ পরীক্ষার অধীনে ক্লাসের নামে পরীক্ষার সাথে একটি পরীক্ষার ক্লাস প্রধান পরীক্ষার সমান্তরাল ডিরেক্টরি কাঠামোতে রয়েছে।

একই প্যাকেজের পরীক্ষা ক্লাস থাকার একটি সুবিধা (যদিও অগত্যা ডিরেক্টরি নেই) আপনি মক পরীক্ষা বস্তুর পরিদর্শন বা ইনজেকশন করার জন্য প্যাকেজ-সুযোগ পদ্ধতিগুলি উপভোগ করতে পারেন।


আমি পরীক্ষার ক্লাসগুলিকে একই প্যাকেজগুলিতে পরীক্ষা করে প্রজেক্ট ক্লাস হিসাবে পরীক্ষা করি, তবে একটি ভিন্ন শারীরিক ডিরেক্টরিতে, যেমন:

myproject/src/com/foo/Bar.java
myproject/test/com/foo/BarTest.java

একটি Maven প্রকল্পে এটি এই মত দেখতে হবে:

myproject/src/main/java/com/foo/Bar.java
myproject/src/test/java/com/foo/BarTest.java

এর মধ্যে প্রধান পয়েন্ট হল যে আমার পরীক্ষার ক্লাসগুলি (এবং পরীক্ষা!) প্যাকেজ-সুযোগ ক্লাস এবং সদস্যদের অ্যাক্সেস করতে পারে।

উপরের উদাহরণটি দেখায় হিসাবে, আমার পরীক্ষার ক্লাসগুলিতে পরীক্ষিত বর্গ প্লাস Test নাম একটি প্রত্যয় হিসাবে থাকে। এটি তাদের দ্রুত খুঁজে পেতে সহায়তা করে - কয়েক শত পরীক্ষার ক্লাসগুলির মধ্যে অনুসন্ধান করার চেষ্টা করা খুব মজার নয়, যাদের প্রত্যেকের নাম Test দিয়ে শুরু হয় ...

@ রিকিটের মন্তব্য দ্বারা অনুপ্রাণিত আপডেট : এইভাবে পরীক্ষার ক্লাসগুলি (সাধারণত) শ্রেণী পরীক্ষার একটি প্রকল্প-ভিত্তিক বর্ণমালার তালিকাতে তাদের পরীক্ষিত বন্ধুর পরে সঠিকভাবে প্রদর্শন করে। (মজার যে আমি প্রতিদিন এই দিন থেকে উপকার লাভ করছি, সচেতনভাবে বুঝতে পারিনি কিভাবে ...)

Update2: Maven মত অনেক ডেভেলপার (নিজেকে সহ), কিন্তু অন্তত হিসাবে অনেক না মনে হয়। IMHO এটি "মূলধারার" জাভা প্রকল্পগুলির জন্য খুবই উপযোগী (আমি এই বিভাগে 90% প্রকল্প রাখব ... তবে অন্য 10% এখনও একটি সংখ্যাসূচক সংখ্যালঘু)। ম্যানভেন কনভেনশন গ্রহণ করতে গেলে এটি ব্যবহার করা সহজ। তবে তা না হলে, এটি জীবনকে দুঃখজনক সংগ্রাম করে। মাউন্ট এন্টি নেভিগেশন সামাজিকীকরণ অনেক মানুষের জন্য বোঝার কঠিন হতে পারে, দৃশ্যত এটি চিন্তা একটি খুব ভিন্ন উপায় প্রয়োজন বোধ করা হয়। (আমি নিজে কখনোই কিন্ট ব্যবহার করতাম না, দুইটি তুলনা করতে পারি না।) এক জিনিস নিশ্চিত: এটি একক (এবং ইন্টিগ্রেশন) প্রক্রিয়াটিতে একটি প্রাকৃতিক, প্রথম-শ্রেণীর পদক্ষেপ পরীক্ষা করে, যা বিকাশকারীদের এই অপরিহার্য অনুশীলনকে গ্রহণ করতে সহায়তা করে।





junit