আজ আমি JUnit পরীক্ষার ক্ষেত্রে JUnit প্রতিবেদনের পরিবর্তে জাভা দৃ as়তার সাথে একটি JUnit পরীক্ষার কেস দেখেছি one একে অপরের চেয়ে বেশি পছন্দ করার জন্য কি কোনও গুরুত্বপূর্ণ সুবিধা বা অসুবিধা রয়েছে?
আজ আমি JUnit পরীক্ষার ক্ষেত্রে JUnit প্রতিবেদনের পরিবর্তে জাভা দৃ as়তার সাথে একটি JUnit পরীক্ষার কেস দেখেছি one একে অপরের চেয়ে বেশি পছন্দ করার জন্য কি কোনও গুরুত্বপূর্ণ সুবিধা বা অসুবিধা রয়েছে?
উত্তর:
JUnit4- এ JUnit জোর দিয়ে বলা ব্যতিক্রম (আসলে ত্রুটি) জাভা assert
কীওয়ার্ড (AssertionError) দ্বারা নিক্ষেপ করা ত্রুটির মতোই , সুতরাং এটি assertTrue
স্ট্যাক ট্রেস ছাড়া অন্যরকম এবং আপনি পার্থক্যটি বলতে পারবেন না।
বলা হচ্ছে, জেভিএম-এ একটি বিশেষ পতাকা নিয়ে জোর দৌড়াদৌড়ি করতে হবে, যার ফলে অনেক পরীক্ষা পাস হতে পারে, কারণ যেইউ ইউএনটি পরীক্ষা চলছিল তখন কেউ সেই পতাকা দিয়ে সিস্টেমটি কনফিগার করতে ভুলে গিয়েছিল - ভাল না।
সাধারণভাবে, এর কারণ হিসাবে, আমি তর্ক করব যে JUnit ব্যবহার করা assertTrue
আরও ভাল অনুশীলন, কারণ এটি পরীক্ষা চালানোর গ্যারান্টি দেয়, ধারাবাহিকতা নিশ্চিত করে (আপনি কখনও কখনও ব্যবহার করেন assertThat
বা জাভা কীওয়ার্ড নয় এমন অন্যান্য সংস্থানসমূহ) এবং যদি জুনিতের আচরণ দৃ as়তা দেয় ভবিষ্যতে পরিবর্তিত হওয়া উচিত (যেমন কোনওরকম ফিল্টার বা ভবিষ্যতের অন্যান্য ইউনাইট বৈশিষ্ট্যে আবদ্ধ হওয়া) আপনার কোডটি উত্তোলন করতে সক্ষম হবে।
জাভাতে আসক্তি কীওয়ার্ডের আসল উদ্দেশ্যটি রানটাইম পেনাল্টি ছাড়াই এটি বন্ধ করতে সক্ষম হওয়া। এটি ইউনিট পরীক্ষায় প্রয়োগ হয় না।
আমি অন্তর্নিহিত assert
বিবৃতিটির চেয়ে আরও সমৃদ্ধ এপিআই সরবরাহ করার কারণে আমি জুনিতের দাবিগুলি পছন্দ করি এবং আরও গুরুত্বপূর্ণভাবে স্পষ্টতই এর বিপরীতে সক্ষম করার প্রয়োজন হয় না assert
, যার জন্য -ea
জেভিএম যুক্তি প্রয়োজন।
-ea
সর্বদা সক্ষম mvn test
, কোনও প্রয়োজন নেই -ea
। রিচার এপি, ভাল ক্যাচ কখনও কখনও আমি মনে করি পরীক্ষার ক্ষেত্রে এপিআইর অপব্যবহার করা হয়েছে কারণ এটি অ্যাপ্লিকেশনটির অংশ নয় (এপি এপি), আমি এটিকে কেবল আরও সমৃদ্ধ পদ্ধতি বলতে পছন্দ করি।
যখন কোনও পরীক্ষা ব্যর্থ হয় আপনি আরও তথ্য পান।
assertEquals(1, 2);
ফলাফল স্বরূপ java.lang.AssertionError: expected:<1> but was:<2>
বনাম
assert(1 == 2);
ফলাফল স্বরূপ java.lang.AssertionError
আপনি বার্তা যুক্তি যুক্ত করলে আপনি আরও বেশি তথ্য পেতে পারেন assertEquals
assert 1==2: "1 is not 2";
।
assert
থাকতে পারে যেখানে জাভা পছন্দনীয় হতে পারে - যথার্থতা যাচাইয়ের জন্য যা কার্য সম্পাদনকে প্রভাবিত করবে এবং এটি ডিফল্টরূপে সেরা অক্ষম। তবে আমার অভিজ্ঞতাটি হ'ল বেশিরভাগ দাবিদাওয়া সর্বদা চালু থাকা উচিত।
আমি বলব পরীক্ষার ক্ষেত্রে JUnit asserts ব্যবহার করুন, এবং কোডে জাভা এর সংস্থান ব্যবহার করুন। অন্য কথায়, আসল কোডটিতে কখনই JUnit নির্ভরতা থাকবে না, সুস্পষ্ট হিসাবে এবং এটি যদি পরীক্ষা হয় তবে এর JUnit প্রকরণগুলি ব্যবহার করা উচিত, কখনও জোর দেওয়া উচিত নয়।
আমি বলব যদি আপনি JUnit ব্যবহার করেন তবে আপনার JUnit প্রতিবেদনগুলি ব্যবহার করা উচিত। assertTrue()
মূলত একইরকম assert
, অন্যথায় কেন JUnit ব্যবহার করবেন?
Assert
আরও বয়লারপ্লেটের প্রয়োজন হবে। assert
JUnit ছাড়া আপনার পুরো ফ্রেমওয়ার্কটি লিখতে হবে।
আপনি যদি একচেটিয়াভাবে চকচকে এবং নতুন স্টাফ ব্যবহার করেন তবে এটি প্রয়োগ করতে পারে না, তবে জোর মধ্যে 1.4SE অবধি জোর দেওয়া হয়নি। সুতরাং, আপনার যদি পুরানো প্রযুক্তি সহ কোনও পরিবেশে অবশ্যই কাজ করা উচিত, আপনি সামঞ্জস্যের কারণে JUnit এর দিকে ঝুঁকতে পারেন।