JUnit 4 এবং TestNG তুলনামূলক থাকত। দুটি টেস্টিং ফ্রেমওয়ার্কের পক্ষে কি কি?
JUnit 4 এবং TestNG তুলনামূলক থাকত। দুটি টেস্টিং ফ্রেমওয়ার্কের পক্ষে কি কি?
উত্তর:
আমি আজ টেস্টএনজি এবং JUnit4 এর সাথে তুলনা করছিলাম এবং টেস্টিং-ফ্রেমওয়ার্কগুলিতে আমার সীমিত অভিজ্ঞতার সাথে আমি উল্লেখ করতে পারি যে প্রধান সুবিধাটি হ'ল ডেটা-সরবরাহকারী ধারণার সাথে প্যারামিট্রাইজড টেস্টগুলি পরিচালনা করার জন্য টেস্টএনজির আরও মার্জিত উপায় রয়েছে।
যতদুর আমি JUnit4 সঙ্গে বলতে পারেন আপনি পরামিতি প্রতিটি সেট জন্য পৃথক পরীক্ষা শ্রেণী (সঙ্গে এটি স্থাপিত সঙ্গে আপনি পরীক্ষা করতে চান তৈরি করতে @RunWith(Parameterized.class)
)। টেস্টএনজি দিয়ে আপনার একক পরীক্ষার ক্লাসে একাধিক ডেটা সরবরাহকারী থাকতে পারে, তাই আপনি আপনার সমস্ত পরীক্ষা একক শ্রেণির জন্যও একক পরীক্ষার শ্রেণিতে রাখতে পারেন।
এখনও অবধি এটিই আমি JUnit4 এর উপর টেস্টএনজির সুবিধা হিসাবে চিহ্নিত করতে পারি।
ইন্টেলিজ আইডিইএতে বাক্সের বাইরে টেস্টএনজি এবং ইউনাইটের জন্য সমর্থন অন্তর্ভুক্ত রয়েছে। তবে, Eclipse কেবল JUnit কে বাক্সের বাইরে সমর্থন করে এবং এটি কার্যকর করতে একটি টেস্টএনজি প্লাগইন ইনস্টল করা দরকার।
তবে, টেস্টএনজির সাথে আমার আরও বিরক্তিকর সমস্যাটি হ'ল এটি হল যে PowerMockTestCase
আপনি যদি পরীক্ষাগুলিতে নির্ভরতা বিদ্রূপ করার জন্য পাওয়ারমক ব্যবহার করছেন তবে আপনার পরীক্ষার ক্লাসগুলি বাড়ানো দরকার । স্পষ্টতই কোনও বিশেষ পদ্ধতিতে বা পাওয়ার সিস্টেমের মাধ্যমে পাওয়ারমক ব্যবহার করার সময় আপনার পরীক্ষার কাঠামোটি সম্পর্কে জানতে হবে অবজেক্ট-কারখানাটি কনফিগার করার উপায় রয়েছেtestng.xml
স্যুট সংজ্ঞা এটি ভেঙে গেছে বলে মনে হচ্ছে। আমি পরীক্ষার-ক্লাসগুলি পরীক্ষা-কাঠামোর ক্লাসগুলি বাড়ানো পছন্দ করি না, এটি হ্যাকিশ বলে মনে হয়।
আপনি যদি পাওয়ারমক ব্যবহার না করেন তবে এটি অবশ্যই সমস্যা নয়, তবে সর্বোপরি আমি এই ধারণাটি পেয়েছি যে JUnit4 আরও ভাল সমর্থনযোগ্য।
উভয় ফ্রেমওয়ার্কের সাথে আমার অভিজ্ঞতার ভিত্তিতে, টেস্টংয়ের কয়েকটি সুবিধাজনক বৈশিষ্ট্য রয়েছে যা জুনিট দল বেশ কয়েক বছর ধরে প্রয়োগ করতে অস্বীকার করেছে। আমি এই কারণে এটি JUnit পছন্দ। টেস্টেঙে রূপান্তর করা সহজ, যেহেতু এটি মূলত JUnit (এমনকি গ্রহনের জন্য একটি রূপান্তরকারী প্লাগইন রয়েছে) সবকিছুকে সমর্থন করে, এই অনুপস্থিত বৈশিষ্ট্যগুলির কারণে JUnit এ ফিরে রূপান্তর করা এত দুর্দান্ত নয়।
টেস্টং @BeforeClass
পদ্ধতিতে স্থির হয় না এবং পরীক্ষার ক্লাসটি পরীক্ষা চালানোর আগে পরীক্ষার ক্লাসটি লোড হওয়ার আগে চালানো হয় (জাবিট আচরণ)) আমার একবার JUnit প্রকল্প ছিল যেখানে সমস্ত ডাটাবেস পরীক্ষার (কয়েক ডজন) শুরুতেই ডাটাবেসটি শুরু করেছিল, যা ছিল বেশ বোকামি আচরণ। জুনিত সম্প্রদায়ের মধ্যে এর পক্ষে এবং বিপক্ষে অনেক বিতর্ক হয়েছিল। এর সূচনাটি হ'ল প্রতিটি পরীক্ষার পদ্ধতির নিজস্ব পরীক্ষার ব্যবস্থা থাকতে হবে এবং অতএব আপনার কোনও পূর্ববর্তী শৈলী পদ্ধতি থাকা উচিত নয় যা স্থির নয় কারণ এটি আপনাকে একবারে চুরির সাথে কোনও উদাহরণ পরিবর্তনশীল সেট করতে দেয় এবং তারপরে আপনার সমস্ত পরীক্ষায় এটি ব্যবহার করে। বৈধ, তবে ইন্টিগ্রেশন পরীক্ষার জন্য সত্যই বিরক্তিকর। টেস্টএনজি ব্যবহারকারীদের এখানে পছন্দ দেয়। জুনিট ডিজাইন করে না, যা বিরক্তিকর।
টেস্টং ডেটা সরবরাহকারীরা JUnit সমতুল্য থেকে কিছুটা নমনীয়। আপনি প্রতিটি পরীক্ষার জন্য নির্দিষ্ট করতে পারবেন যে কোনও ডেটা সরবরাহকারী পদ্ধতিটি কোনও এক আকারের পরিবর্তে ইনপুট সরবরাহ করবে যা জুনিট হিসাবে পুরো শ্রেণীর জন্য সমস্ত পদ্ধতির সাথে খাপ খায়। সুতরাং আপনার কাছে এক শ্রেণিতে পরীক্ষার জন্য ইতিবাচক এবং নেতিবাচক কেস ডেটা সরবরাহকারী থাকতে পারে। পেয়ে খুব সুন্দর।
আপনি @Test
টেস্টং সহ একটি শ্রেণি চিহ্নিত করতে পারেন , যার অর্থ: প্রতিটি পাবলিক পদ্ধতি একটি পরীক্ষা। জুনিটে আপনাকে @Test
প্রতিটি পদ্ধতিতে অনুলিপি / পেস্ট করতে হবে ।
উভয়ের সাথে বিরক্তি হ'ল হ্যামক্রাস্টটি যেভাবে ইউনিতের সাথে একত্রিত হয় এবং যেভাবে জুনিয়ট টেস্টঞ্জের সাথে বান্ডিল হয়। ম্যাভেনের পরিবর্তিত জারগুলি রয়েছে যা এই সমস্যাটি নয়।
উভয় ফ্রেমওয়ার্কের সাথে আমার বড় উদ্বেগ হ'ল তারা উভয়টি বিকশিত হওয়া বন্ধ করেছে বলে মনে হয়। রিলিজ ক্রমবর্ধমান কম ঘন হয় এবং কম এবং কম লক্ষণীয় বৈশিষ্ট্য আছে ঝোঁক। উদাহরণস্বরূপ পুরো বিডিডি আন্দোলনের কোনও কাঠামোর উপর খুব একটা প্রভাব পড়েছিল বলে মনে হয়। এছাড়াও, জুনিট কেবল উপরে উল্লিখিত আমার বেশিরভাগটি গ্রহণ করতে পারত। ইউনিত এই বিষয়গুলির কোনও প্রয়োগ করতে পারে না কেন তার কোনও ভাল প্রযুক্তিগত কারণ নেই; JUnit এর পিছনে লোকেরা কেবল এই জিনিসগুলি বাস্তবায়নের জন্য পছন্দ করে না। উভয় প্রকল্পেরই ভবিষ্যতের দিকনির্দেশগুলির জন্য দৃষ্টিশক্তির অভাব রয়েছে বলে মনে হয় এবং তারা গত কয়েক বছর ধরে কেবল ছোটখাটো টুইট করে খুশি বলে মনে হচ্ছে।
আমি জুনিটের উপরে টেস্টএনজি পরিবর্তন করার জন্য একটি ভাল কারণ সন্ধান করছিলাম এবং টমেক কাকজানভস্কি এই প্রশ্নগুলি খুব ভালভাবে সম্বোধন করে এই স্লাইডগুলি পেয়েছি । টমেক প্র্যাকটিকাল ইউনিট টেস্টিং বইয়ের লেখক যা বিকাশকারী এবং পরীক্ষকগণ খুব সম্মানিত বলে মনে হয়।
আপনি যদি জাভা / স্কেলা প্রকল্পে কাজ করেন এবং গ্রেডল আপনার পছন্দের বিল্ড টুল, মনে রাখবেন যে ScalaTest
ফ্রেমওয়ার্কটি কেবলমাত্র JUnitRunner
আপনার স্কাল পরীক্ষা চালাতে পারে। অন্য কথায়, আপনার একটি পছন্দ আছে:
আপনি মকিতোকে আপনার বিদ্রূপের কাঠামো হিসাবে ব্যবহার করতে পারেন। এটি টেস্টএনজির সাথে দুর্দান্তভাবে সংহত করে। টেস্টএনজি দিয়ে মকিতো ব্যবহার করতে আপনাকে কোনও শ্রেণি বাড়াতে হবে না। আপনার টেস্টিং কোডটি এইভাবে কম সংযুক্ত হয়েছে এবং যদি কোনও কারণে আপনাকে অন্য উপহাসের ফ্রেমওয়ার্কগুলি ব্যবহার করতে হয় তবে এটি করা সহজ।
সংক্ষেপে..
যদি আপনার ক্ষেত্রটি তাদের মধ্যে কোনও নির্ভরতা ছাড়াই সূক্ষ্ম বিশদ ইউনিট পরীক্ষার মধ্যে সীমাবদ্ধ থাকে তবে JUnit ব্যবহার করা যেতে পারে।
যদি আপনার স্কোপের জন্য কার্যকরী পরীক্ষার প্রয়োজন হয় যা পরীক্ষার মধ্যে ডেটা (প্যারামিটার) নির্ভরতা এবং ভাগ করে নিতে পারে না তবে টেস্টএনজি বাছাই করে। এছাড়াও, টেস্টএনজি জুনিতের মতো ইউনিট টেস্টিং করতে পারে। সুতরাং আপনার ইউনিট পরীক্ষার স্যুট এবং কার্যকরী পরীক্ষার স্যুট থাকতে পারে।