CodeGym/Java Course/মডিউল 3/সম্পর্কিত প্রকল্প: পরীক্ষা এবং লগিং

সম্পর্কিত প্রকল্প: পরীক্ষা এবং লগিং

বিদ্যমান

এই প্রোগ্রামটি একটি হিপোড্রোমের অনুকরণ

শুরু করার জন্য, পূর্ববর্তী প্রকল্পের মতো, সংগ্রহস্থল থেকে নিজেকে একটি কাঁটা তৈরি করুন: https://github.com/CodeGymCC/hippodrome , এবং এই কাঁটা নিজেই ক্লোন করুন।

আপনার টাস্ক পরীক্ষা এবং লগিং যোগ করা হয়.

প্রয়োজনীয় পরীক্ষার তালিকা

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

দ্বিতীয় ক্ষেত্রে, কোন ধরণের পরীক্ষা পাস হয়নি তা বোঝা আরও কঠিন এবং আপনাকে লগগুলি দেখতে হবে।

1. ঘোড়া শ্রেণী:

  1. নির্মাণকারী
    • প্রথম প্যারামিটার হিসাবে কন্সট্রাক্টরের কাছে পাস করার সময় পরীক্ষা করে IllegalArgumentExceptionনিক্ষেপ করা হবে null। এটি করার জন্য, পদ্ধতিটি ব্যবহার করুন assertThrows;
    • পরীক্ষা করুন যে যখন প্রথম প্যারামিটার হিসাবে কনস্ট্রাক্টরের কাছে পাস করা হয় null, ছোঁড়া ব্যতিক্রমটিতে "নাম নাল হতে পারে না" বার্তা থাকবে। এটি করার জন্য, আপনাকে ধরা ব্যতিক্রম থেকে একটি বার্তা পেতে হবে এবং ব্যবহার করতে হবে assertEquals;
    • কনস্ট্রাক্টরের কাছে প্রথম প্যারামিটার হিসাবে একটি খালি স্ট্রিং বা শুধুমাত্র সাদা স্পেস অক্ষর (স্পেস, ট্যাব, ইত্যাদি) সম্বলিত একটি স্ট্রিং পাস করার সময়, . নিক্ষেপ করা হবে IllegalArgumentException। হোয়াইটস্পেস অক্ষরের বিভিন্ন রূপের সাথে পরীক্ষা করতে, আপনাকে পরীক্ষাটি প্যারামিটারাইজ করতে হবে;
    • পরীক্ষা করুন যে একটি খালি স্ট্রিং বা একটি স্ট্রিং যেখানে শুধুমাত্র হোয়াইটস্পেস অক্ষর (স্পেস, ট্যাব, ইত্যাদি) কনস্ট্রাক্টরকে প্রথম প্যারামিটার হিসাবে পাস করার সময়, নিক্ষেপ করা ব্যতিক্রমটিতে "নামটি ফাঁকা হতে পারে না" বার্তা থাকবে;
    • পরীক্ষা করুন যে যখন একটি নেতিবাচক সংখ্যা দ্বিতীয় প্যারামিটার হিসাবে কনস্ট্রাক্টরের কাছে পাস করা হয়, IllegalArgumentException;
    • পরীক্ষা করুন যে যখন একটি নেতিবাচক সংখ্যা দ্বিতীয় প্যারামিটার হিসাবে কনস্ট্রাক্টরের কাছে পাস করা হয়, তখন নিক্ষেপ করা ব্যতিক্রমটিতে "গতি নেতিবাচক হতে পারে না" বার্তা থাকবে;
    • পরীক্ষা করুন যে যখন একটি নেতিবাচক সংখ্যা তৃতীয় প্যারামিটার হিসাবে কনস্ট্রাক্টরের কাছে পাস করা হয়, IllegalArgumentException;
    • কনস্ট্রাক্টরের কাছে তৃতীয় প্যারামিটার হিসাবে একটি নেতিবাচক সংখ্যা পাস করার সময় পরীক্ষা করুন, নিক্ষেপ করা ব্যতিক্রমটিতে "দূরত্ব ঋণাত্মক হতে পারে না" বার্তা থাকবে;
  2. getName পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি স্ট্রিংটি ফেরত দেয় যা কনস্ট্রাক্টরের কাছে প্রথম প্যারামিটার হিসাবে পাস করা হয়েছিল;
  3. GetSpeed ​​পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি কনস্ট্রাক্টরের কাছে দ্বিতীয় প্যারামিটার হিসাবে পাস করা নম্বরটি ফেরত দেয়;
  4. getDistance পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি কন্সট্রাক্টরের কাছে তৃতীয় প্যারামিটার হিসাবে পাস করা নম্বরটি ফেরত দেয়;
    • দুটি পরামিতি সহ একটি কনস্ট্রাক্টর ব্যবহার করে বস্তুটি তৈরি করা হলে পদ্ধতিটি শূন্য দেয় কিনা তা পরীক্ষা করুন;
  5. সরানোর পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি getRandomDouble0.2 এবং 0.9 প্যারামিটার সহ পদ্ধতির ভিতরে কল করে। এটি করার জন্য, আপনাকে MockedStaticএর পদ্ধতি ব্যবহার করতে হবে verify;
    • পরীক্ষা করুন যে পদ্ধতিটি সূত্র দ্বারা গণনা করা দূরত্বের মান নির্ধারণ করে: distance + speed * getRandomDouble(0.2, 0.9). এটি করার জন্য, আপনাকে এটিকে লক করতে হবে getRandomDoubleযাতে এটি নির্দিষ্ট মান প্রদান করে যা আপনাকে পরীক্ষার প্যারামিটারাইজ করে সেট করতে হবে।

2. হিপোড্রোম শ্রেণী:

  1. কনস্ট্রাক্টর
    • কনস্ট্রাক্টরের কাছে পাস করা হলে IllegalArgumentException; নিক্ষেপ করা হবে null;
    • চেক করুন যে কনস্ট্রাক্টরের কাছে পাঠানো হলে null, ছুঁড়ে দেওয়া ব্যতিক্রমটিতে "ঘোড়াগুলি শূন্য হতে পারে না" বার্তা থাকবে৷
    • কনস্ট্রাক্টরের কাছে একটি খালি তালিকা পাস করার সময় পরীক্ষা করুন, ; নিক্ষেপ করা হবে IllegalArgumentException;
    • কনস্ট্রাক্টরের কাছে একটি খালি তালিকা দেওয়ার সময় পরীক্ষা করুন, নিক্ষেপ করা ব্যতিক্রমটিতে "ঘোড়াগুলি খালি হতে পারে না" বার্তা থাকবে;
  2. getHorses পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি এমন একটি তালিকা প্রদান করে যাতে একই বস্তু রয়েছে এবং একই ক্রমে যে তালিকাটি কনস্ট্রাক্টরের কাছে পাঠানো হয়েছিল। হিপোড্রোম অবজেক্ট তৈরি করার সময় , কনস্ট্রাক্টরের কাছে 30টি ভিন্ন ঘোড়ার একটি তালিকা পাঠান;
  3. সরানোর পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি সমস্ত ঘোড়ায় সরানোর পদ্ধতিকে কল করে। হিপোড্রোম অবজেক্ট তৈরি করার সময়, কনস্ট্রাক্টরের কাছে 50টি মক ঘোড়ার একটি তালিকা পাঠান এবং ব্যবহার করুন verify
  4. getWinner পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি সবচেয়ে বড় দূরত্বের মান সহ ঘোড়াকে ফেরত দেয়।

3. প্রধান শ্রেণী

  1. প্রধান পদ্ধতি
    • পরীক্ষা করুন যে পদ্ধতিটি 22 সেকেন্ডের বেশি কার্যকর হয় না। এটি করতে, টাইমআউট টীকা ব্যবহার করুন। এই পরীক্ষাটি লেখার পরে, এটি নিষ্ক্রিয় করুন (অক্ষম টীকা ব্যবহার করুন)। তাই সব পরীক্ষা চালাতে সময় লাগবে না, প্রয়োজনে নিজেও চালানো যাবে।

কি লগ করা প্রয়োজন

1. প্রধান শ্রেণী:

  1. হিপোড্রোম অবজেক্ট তৈরি করার পরে, লগটিতে এইরকম একটি এন্ট্রি যোগ করুন:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. বিজয়ীদের সম্পর্কে তথ্য প্রদর্শন করার পরে, লগটিতে এইরকম একটি এন্ট্রি যোগ করুন:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

হিপোড্রোম ক্লাস:

  1. যদি নাল কনস্ট্রাক্টরের কাছে পাঠানো হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে এইরকম একটি এন্ট্রি যুক্ত করুন:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. খ. যদি কনস্ট্রাক্টরের কাছে একটি খালি তালিকা পাস করা হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে এইরকম একটি এন্ট্রি যুক্ত করুন:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. কনস্ট্রাক্টরের শেষে, লগটিতে এইরকম একটি এন্ট্রি যোগ করুন:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. ঘোড়া শ্রেণী:

  1. যদি null একটি নামের পরিবর্তে কনস্ট্রাক্টরের কাছে পাঠানো হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে একটি এন্ট্রি যুক্ত করুন যেমন:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. যদি কনস্ট্রাক্টরের কাছে পাঠানো নামটি খালি হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে এইরকম একটি এন্ট্রি যুক্ত করুন:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. যদি কনস্ট্রাক্টরের কাছে পাস করা গতি শূন্যের চেয়ে কম হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে এইরকম একটি এন্ট্রি যুক্ত করুন:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. যদি কনস্ট্রাক্টরের কাছে পাস করা দূরত্ব শূন্যের কম হয়, তবে ব্যতিক্রমটি নিক্ষেপ করার আগে, লগটিতে এইরকম একটি এন্ট্রি যুক্ত করুন:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. কনস্ট্রাক্টরের শেষে, লগটিতে এইরকম একটি এন্ট্রি যোগ করুন:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

লগগুলি hippodrome.log ফাইলে লিখতে হবে , যা লগ ফোল্ডারে প্রোজেক্ট রুটে অবস্থিত হওয়া উচিত । প্রতিদিন ফাইলের নামকরণ করা উচিত হিপ্পোড্রোম প্যাটার্ন অনুসারে । 2021-12-31.log এবং এর পরিবর্তে একটি নতুন hippodrome.log তৈরি করা উচিত । এটি করতে, RollingFile অ্যাপেন্ডার ব্যবহার করুন । এই ক্ষেত্রে, 7 দিনের বেশি পুরানো ফাইল মুছে ফেলা উচিত। এটি করার জন্য, আপনি একটি গঠন ব্যবহার করতে পারেন যেমন:

<DefaultRolloverStrategy>
    <Delete>
        <IfFileName/>
        <IfLastModified/>
    </Delete>
</DefaultRolloverStrategy>

তিনটি বিন্দুর পরিবর্তে কী প্রতিস্থাপন করতে হবে তা Google করেছি।😊


প্রকল্প বিশ্লেষণসমাপ্তির পর দেখুন!

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই