JavaRush /جاوا بلاگ /Random-SD /جاوا يونٽ ٽيسٽنگ: ٽيڪنالاجي، تصور، مشق

جاوا يونٽ ٽيسٽنگ: ٽيڪنالاجي، تصور، مشق

گروپ ۾ شايع ٿيل
اڄ توهان کي مشڪل سان هڪ ايپليڪيشن ملندي جيڪا ٽيسٽن سان ڍڪيل نه آهي، تنهنڪري هي موضوع نوان ڊولپرز لاءِ هميشه کان وڌيڪ لاڳاپيل هوندو: بغير ٽيسٽن جي توهان ڪٿي به حاصل نه ڪري سگهو. هڪ اشتهار جي طور تي، مان توهان کي مشورو ڏيان ٿو ته توهان منهنجي گذريل مضمونن کي ڏسو. انهن مان ڪجهه ٽيسٽن کي ڍڪيندا آهن (۽ پوءِ به مضمون ڏاڍا ڪارآمد هوندا):
  1. MySql کي تبديل ڪرڻ لاءِ ماريا ڊي بي استعمال ڪندي ڊيٽابيس جي انٽيگريشن ٽيسٽ
  2. گھڻ لساني ايپليڪيشن جو نفاذ
  3. فائلن کي ايپليڪيشن ۾ محفوظ ڪرڻ ۽ انهن بابت ڊيٽا ڊيٽابيس ڏانهن
اچو ته غور ڪريون ته ڪهڙي قسم جا ٽيسٽ اصول ۾ استعمال ڪيا وڃن ٿا، ۽ ان کان پوءِ اسين تفصيل سان هر شي جو مطالعو ڪنداسين جيڪو توهان کي يونٽ جي جاچ بابت ڄاڻڻ جي ضرورت آهي.

جاچ جا قسم

هڪ امتحان ڇا آهي؟ جيئن Wiki چوي ٿو: " هڪ ٽيسٽ يا ٽيسٽ هڪ طريقو آهي جيڪو سسٽم جي بنيادي عملن جو مطالعو ڪندي سسٽم کي مختلف حالتن ۾ رکي ٿو ۽ ان ۾ قابل مشاهدو تبديلين کي ٽريڪ ڪري ٿو." ٻين لفظن ۾، اهو ڪجهه حالتن ۾ اسان جي سسٽم جي صحيح آپريشن جو امتحان آهي. يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 2خير، اچو ته ڏسون ته ڪهڙي قسم جا ٽيسٽ آهن:
  1. يونٽ ٽيسٽنگ ٽيسٽ آھي جنھن جو ڪم آھي سسٽم جي ھر ماڊل کي انفرادي طور تي جانچڻ. اهو ضروري آهي ته اهي سسٽم جا گهٽ ۾ گهٽ ورهايل ٽڪرا آهن، مثال طور، ماڊل.

  2. سسٽم ٽيسٽنگ هڪ اعليٰ سطحي امتحان آهي جيڪو هڪ ايپليڪيشن جي وڏي حصي يا مجموعي طور سسٽم جي آپريشن کي جانچڻ لاءِ.

  3. ريگريشن ٽيسٽنگ اها جانچ آهي جيڪا جانچڻ لاءِ استعمال ڪئي ويندي آهي ته ڇا نيون خاصيتون يا بگ فيڪس ايپليڪيشن جي موجوده ڪارڪردگي تي اثرانداز ٿين ٿا ۽ ڇا پراڻا بگ ٻيهر ظاهر ٿين ٿا.

  4. فنڪشنل ٽيسٽنگ ايپليڪيشن جي حصي جي تعميل جي جانچ ڪري رهي آهي وضاحتن، صارف ڪهاڻيون وغيره ۾ بيان ڪيل گهرجن سان.

    فنڪشنل ٽيسٽ جا قسم:

    • "سفيد باڪس" ٽيسٽ ايپليڪيشن جي حصي جي تعميل جي ضرورتن سان گڏ سسٽم جي اندروني عمل جي ڄاڻ سان؛
    • "ڪارو باڪس" ٽيسٽ ايپليڪيشن جي حصي جي تعميل جي ضرورتن سان بغير سسٽم جي اندروني عمل جي ڄاڻ کان سواء.
  5. پرفارمنس ٽيسٽنگ ٽيسٽن جو هڪ قسم آهي جنهن کي لکيو ويو آهي ته ان رفتار کي طئي ڪرڻ لاءِ جنهن تي سسٽم يا ان جو حصو ڪنهن خاص لوڊ هيٺ هلندي آهي.
  6. لوڊ ٽيسٽ - معياري لوڊ تحت سسٽم جي استحڪام کي جانچڻ لاءِ ۽ وڌ ۾ وڌ ممڪن چوٽي ڳولڻ لاءِ ٺهيل ٽيسٽون جنهن تي ايپليڪيشن صحيح طريقي سان ڪم ڪري ٿي.
  7. اسٽريس ٽيسٽنگ ٽيسٽنگ جو ھڪڙو قسم آھي جيڪو غير معياري لوڊ جي ھيٺان ايپليڪيشن جي ڪارڪردگي کي جانچڻ ۽ وڌ ۾ وڌ ممڪن چوٽي کي طئي ڪرڻ لاءِ ٺاھيو ويو آھي جنھن تي سسٽم حادثو نه ٿيندو.
  8. سيڪيورٽي جاچ - ٽيسٽ سسٽم جي سيڪيورٽي کي جانچڻ لاء استعمال ڪيو ويو آهي (هيڪرز جي حملن کان، وائرس، رازداري ڊيٽا تائين غير مجاز رسائي ۽ زندگي جي ٻين خوشين کان).
  9. لوڪلائيزيشن ٽيسٽنگ ايپليڪيشن لاءِ لوڪلائيزيشن ٽيسٽنگ آهي.
  10. استعمال جي جاچ جاچ جو هڪ قسم آهي جنهن جو مقصد استعمال ڪرڻ جي قابليت، سمجھڻ، ڪشش ۽ استعمال ڪندڙن جي سکيا جي صلاحيت کي جانچڻ آهي.
  11. اهو سڀ ڪجهه سٺو لڳندو آهي، پر اهو عمل ۾ ڪيئن ڪم ڪندو آهي؟ اهو سادو آهي: مائڪ ڪوهن جو ٽيسٽنگ پرامڊ استعمال ڪيو ويو آهي: يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 4هي پرامڊ جو هڪ آسان نسخو آهي: هاڻي اهو ننڍن حصن ۾ ورهايل آهي. پر اڄ اسين خراب نه ڪنداسين ۽ آسان اختيار تي غور ڪنداسين.
    1. يونٽ - يونٽ ٽيسٽ ايپليڪيشن جي مختلف تہن ۾ استعمال ٿيل، ايپليڪيشن جي ننڍڙي تقسيم منطق جي جانچ ڪندي: مثال طور، هڪ طبقو، پر اڪثر ڪري هڪ طريقو. اهي تجربا اڪثر ڪري ٻاهرئين منطق کان جيترو ٿي سگهي الڳ ڪرڻ جي ڪوشش ڪندا آهن، يعني اهو وهم پيدا ڪرڻ ته باقي ايپليڪيشن معياري موڊ ۾ ڪم ڪري رهي آهي.

      ھميشه انھن ٽيسٽن مان گھڻا ھئڻ گھرجي (ٻين قسمن کان وڌيڪ)، ڇاڪاڻ ته اھي ننڍا ٽڪرا آزمائيندا آھن ۽ ڏاڍا ھلڪو وزن وارا آھن، نه گھڻا وسيلا استعمال ڪن ٿا (وسيلا مان مطلب رام ۽ وقت).

    2. انضمام- انضمام جي جاچ. اهو سسٽم جي وڏن ٽڪرن کي چيڪ ڪري ٿو، اهو آهي، اهو يا ته منطق جي ڪيترن ئي ٽڪرن جو ميلاپ آهي (ڪيترائي طريقن يا طبقن)، يا هڪ خارجي جزو سان ڪم ڪرڻ جي درستگي. عام طور تي انهن ٽيسٽن مان گهٽ آهن يونٽ ٽيسٽن جي ڀيٽ ۾، ڇاڪاڻ ته اهي ڳري آهن.

      انٽيگريشن ٽيسٽ جي هڪ مثال طور، توهان هڪ ڊيٽابيس سان ڳنڍڻ تي غور ڪري سگهو ٿا ۽ چيڪ ڪري سگهو ٿا ته ان سان ڪم ڪندڙ طريقا صحيح ڪم ڪن ٿا .

    3. UI - ٽيسٽ جيڪي يوزر انٽرفيس جي آپريشن کي چيڪ ڪن ٿا. اهي ايپليڪيشن جي سڀني سطحن تي منطق کي متاثر ڪن ٿا، ڇو ته انهن کي پڻ سڏيو ويندو آهي آخر کان آخر تائين. ضابطي جي طور تي، انهن مان ڪيترائي ٿورا آهن، ڇاڪاڻ ته اهي سڀ کان وڌيڪ وزن وارا آهن ۽ انهن کي تمام ضروري (استعمال ٿيل) رستن جي جانچ ڪرڻ گهرجي.

      مٿي ڏنل شڪل ۾ اسان ٽڪنڊي جي مختلف حصن جي علائقن جو تناسب ڏسون ٿا: تقريبن ساڳيو تناسب حقيقي ڪم ۾ انهن تجربن جي تعداد ۾ برقرار رکيو ويو آهي.

      اڄ اسين سڀ کان وڌيڪ استعمال ٿيل ٽيسٽن تي ويجھي نظر وجهنداسين - يونٽ ٽيسٽ، ڇو ته جاوا جا سڀ ڊولپرز انهن کي بنيادي سطح تي استعمال ڪرڻ جي قابل هوندا.

    يونٽ ٽيسٽ جا اهم تصور

    ٽيسٽ ڪوريج (ڪوڊ ڪوريج) ايپليڪيشن ٽيسٽ جي معيار جي بنيادي جائزي مان هڪ آهي. هي ڪوڊ جو سيڪڙو آهي جيڪو ڍڪيل هو ٽيسٽ (0-100٪). عملي طور تي، ڪيترائي ماڻهو هن فيصد جو تعاقب ڪن ٿا، جنهن سان مان متفق نه آهيان، ڇاڪاڻ ته اهي ٽيسٽ شامل ڪرڻ شروع ڪن ٿا جتي انهن جي ضرورت ناهي. مثال طور، اسان جي خدمت ۾ معياري CRUD (ٺاهي/حاصل/اپڊيٽ/حذف) آپريشن آهن بغير اضافي منطق جي. اهي طريقا خالص وچولي آهن جيڪي ڪم جي نمائندگي ڪن ٿا پرت کي جيڪي مخزن سان ڪم ڪن ٿيون. هن صورتحال ۾، اسان کي امتحان ڏيڻ لاء ڪجھ به نه آهي: شايد اهو طريقو Tao کان هڪ طريقو سڏيندو آهي، پر اهو سنجيده ناهي. ٽيسٽ ڪوريج جو جائزو وٺڻ لاء، اضافي اوزار عام طور تي استعمال ٿيندا آهن: JaCoCo، Cobertura، Clover، Emma، وغيره. هن مسئلي جي وڌيڪ تفصيلي مطالعي لاء، ڪجهه مناسب مضمون رکو: TDD (Test-driven Development) - ٽيسٽ-هلندڙ ترقي. هن طريقي ۾، سڀ کان پهريان، هڪ امتحان لکيو ويو آهي جيڪو هڪ مخصوص ڪوڊ چيڪ ڪندو. اهو بليڪ باڪس جي جاچ مان ظاهر ٿئي ٿو: اسان ڄاڻون ٿا ته ان پٽ تي ڇا آهي ۽ اسان ڄاڻون ٿا ته ان پٽ تي ڇا ٿيڻ گهرجي. هي ڪوڊ نقل ڪرڻ کان پاسو ڪري ٿو. ٽيسٽ تي مبني ڊولپمينٽ شروع ٿئي ٿي ايپليڪيشن جي هر ننڍڙي ڪارڪردگي لاءِ ٽيسٽ ڊزائين ڪرڻ ۽ ترقي ڪرڻ سان. TDD انداز ۾، پهريون، هڪ ٽيسٽ تيار ڪئي وئي آهي جيڪا وضاحت ڪري ٿي ۽ تصديق ڪري ٿي ته ڪوڊ ڇا ڪندو. TDD جو بنيادي مقصد ڪوڊ کي صاف، آسان، ۽ غلطي کان پاڪ ڪرڻ آهي. يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 6طريقيڪار ھيٺ ڏنل اجزاء تي مشتمل آھي:
    1. اسان جا امتحان لکي رهيا آهيون.
    2. اسان امتحان هلون ٿا، ڇا اهو گذري ويو يا نه (اسان ڏسون ٿا ته هر شيء ڳاڙهو آهي - ٻاهر نه وڃو: اهو ڪيئن هجڻ گهرجي).
    3. اسان ڪوڊ شامل ڪيو جيڪو هن ٽيسٽ کي پورو ڪرڻ گهرجي (ٽيسٽ هلائي).
    4. اسان ڪوڊ ريفيڪٽر ڪريون ٿا.
    انهي حقيقت جي بنياد تي ته يونٽ ٽيسٽ آٽوميشن پيرامڊ ۾ ننڍا ننڍا عنصر آهن، TDD انهن تي ٻڌل آهي. يونٽ ٽيسٽ جي مدد سان اسان ڪنهن به طبقي جي ڪاروباري منطق کي جانچي سگھون ٿا. بي ڊي ڊي (رويي تي مبني ترقي) - رويي ذريعي ترقي. اهو طريقو TDD تي ٻڌل آهي. وڌيڪ واضح طور تي، اهو صاف زبان ۾ لکيل مثالن کي استعمال ڪري ٿو (عام طور تي انگريزيء ۾) جيڪي ترقي ۾ شامل هر ڪنهن لاء سسٽم جي رويي کي بيان ڪن ٿا. اسان هن اصطلاح تي غور نه ڪنداسين، ڇو ته اهو خاص طور تي امتحان ڏيندڙ ۽ ڪاروباري تجزيه نگارن کي متاثر ڪري ٿو. ٽيسٽ ڪيس - هڪ اسڪرپٽ جيڪو بيان ڪري ٿو قدمن، مخصوص شرطن ۽ پيرا ميٽرز کي ٽيسٽ هيٺ ڪوڊ جي عمل جي تصديق ڪرڻ لاءِ. فڪسچر ٽيسٽنگ ماحول جي حالت آهي جيڪا ٽيسٽ تحت طريقي جي ڪامياب عمل لاءِ ضروري آهي. هي شيون جو اڳواٽ مقرر ڪيل سيٽ آهي ۽ انهن جو رويو استعمال ڪيل حالتن هيٺ.

    جاچ جا مرحلا

    امتحان ٽن مرحلن تي مشتمل آهي:
    1. جانچڻ لاءِ ڊيٽا جي وضاحت ڪرڻ (فڪسچر).
    2. ٽيسٽ تحت ڪوڊ استعمال ڪندي (ٽيسٽ تحت طريقي کي سڏيندي).
    3. نتيجن جي جانچ ڪندي ۽ انهن جي مقابلي ۾ متوقع ماڻهن سان.
    يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 7ٽيسٽ ماڊلٽي کي يقيني بڻائڻ لاء، توهان کي ايپليڪيشن جي ٻين تہن کان الڳ ٿيڻ جي ضرورت آهي. اهو اسٽب، ٺٺوليون ۽ جاسوس استعمال ڪندي ڪري سگهجي ٿو. ٺٺوليون شيون آهن جيڪي حسب ضرورت هونديون آهن (مثال طور، هر ٽيسٽ لاءِ مخصوص) ۽ توهان کي جوابن جي صورت ۾ طريقن جي ڪالن لاءِ اميدون مقرر ڪرڻ جي اجازت ڏين ٿا جيڪي اسان وصول ڪرڻ جو ارادو رکون ٿا. توقع جي چڪاس ڪالن ذريعي موڪ اعتراضن جي ذريعي ڪئي ويندي آهي. Stubs - ٽيسٽ دوران ڪالن لاءِ سخت وائرڊ جواب ڏيو. اهي پڻ ڪال جي باري ۾ معلومات محفوظ ڪري سگهن ٿا (مثال طور، پيٽرولر يا انهن ڪالن جو تعداد). انهن کي ڪڏهن ڪڏهن انهن جي پنهنجي اصطلاح سان سڏيو ويندو آهي - جاسوس ( جاسوس ). ڪڏهن ڪڏهن اهي اصطلاح اسٽبس ۽ ٺٺوليون مونجهارو آهن: فرق اهو آهي ته هڪ اسٽب ڪنهن به شيءَ کي چيڪ نٿو ڪري، پر صرف ڏنل حالت کي نقل ڪري ٿو. ٺٺولي هڪ اعتراض آهي جنهن ۾ اميدون آهن. مثال طور، ته هڪ ڏنل طبقي جو طريقو هڪ خاص تعداد ۾ ڀيرا سڏيو وڃي. ٻين لفظن ۾، توهان جو امتحان ڪڏهن به ٽٽڻ جي ڪري نه ڀڃندو، پر اهو هڪ ٺٺولي جي ڪري ڀڄي سگهي ٿو.

    ٽيسٽ ماحول

    تنهنڪري هاڻي اچو ته ڪاروبار ڏانهن وڃو. جاوا لاءِ ڪيترائي ٽيسٽنگ ماحول (فريم ورڪ) موجود آهن. انهن مان سڀ کان وڌيڪ مشهور آهن JUnit ۽ TestNG. اسان جي نظرثاني لاءِ، اسان استعمال ڪندا آهيون: يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 8JUnit ٽيسٽ ھڪڙو طريقو آھي جيڪو ھڪڙي طبقي ۾ موجود آھي جيڪو صرف جانچ لاءِ استعمال ڪيو ويندو آھي. ھڪڙي طبقي کي عام طور تي ساڳيو نالو ڏنو ويو آھي اھو ڪلاس جنھن جي آخر ۾ + ٽيسٽ سان جاچ ڪري رھيو آھي. مثال طور، CarService→ CarServiceTest. Maven تعمير ڪرڻ وارو نظام خودڪار طور تي امتحان واري علائقي ۾ اهڙن طبقن کي شامل ڪري ٿو. حقيقت ۾، هن طبقي کي ٽيسٽ ڪلاس سڏيو ويندو آهي. اچو ته ٿورڙي بنيادي تشريح جي ذريعي وڃون: @Test - هن طريقي جي تعريف هڪ ٽيسٽ طريقي جي طور تي (حقيقت ۾، هن تشريح سان نشان لڳل طريقو هڪ يونٽ ٽيسٽ آهي). @Before - انهي طريقي کي نشانو بڻايو جيڪو هر ٽيسٽ کان اڳ تي عمل ڪيو ويندو. مثال طور، ڪلاس ٽيسٽ ڊيٽا ڀرڻ، ان پٽ ڊيٽا پڙهڻ وغيره. @After - مٿي رکيل طريقي سان جنهن کي هر ٽيسٽ کان پوءِ سڏيو ويندو (ڊيٽا صاف ڪرڻ، ڊفالٽ ويلز بحال ڪرڻ). @BeforeClass - مٿي رکيل طريقي سان - @Before جي مطابق. پر هن طريقي کي صرف هڪ ڀيرو سڏيو ويندو آهي سڀني ٽيسٽن کان اڳ ڏنل طبقي لاءِ ۽ ان ڪري جامد هجڻ ضروري آهي. اهو وڌيڪ ڳري ڊيوٽي آپريشن ڪرڻ لاء استعمال ڪيو ويندو آهي، جهڙوڪ ٽيسٽ ڊيٽابيس کي کڻڻ. @AfterClass @BeforeClass جي برعڪس آهي: ڏنل طبقي لاءِ هڪ ڀيرو تي عمل ڪيو ويو، پر سڀني ٽيسٽن کان پوءِ عمل ڪيو ويو. استعمال ڪيو ويو، مثال طور، مسلسل وسيلن کي صاف ڪرڻ يا ڊيٽابيس کان ڌار ڪرڻ لاء. @Ignore - نوٽ ڪيو ته هيٺ ڏنل طريقو غير فعال آهي ۽ ان کي نظر انداز ڪيو ويندو جڏهن مجموعي طور تي هلندڙ ٽيسٽون. اهو مختلف ڪيسن ۾ استعمال ڪيو ويندو آهي، مثال طور، جيڪڏهن بنيادي طريقو تبديل ڪيو ويو آهي ۽ ان لاء ٽيسٽ کي ٻيهر ڪرڻ جو ڪو وقت نه هو. اهڙين حالتن ۾، اهو پڻ مشورو ڏنو ويو آهي ته وضاحت شامل ڪريو - @Ignore("ڪجهه وضاحت"). @ ٽيسٽ (متوقع = Exception.class) - استعمال ٿيل منفي ٽيسٽ لاءِ. اهي تجربا آهن جيڪي چيڪ ڪن ٿا ته هڪ طريقو ڪنهن غلطي جي صورت ۾ ڪيئن عمل ڪري ٿو، اهو آهي، ٽيسٽ طريقي جي توقع رکي ٿو ته ڪجهه استثنا اڇلائي. اهڙو طريقو @Test تشريح پاران ظاهر ڪيو ويو آهي، پر پڪڙڻ جي غلطي سان. @ ٽيسٽ (ٽائم آئوٽ = 100) - چيڪ ڪري ٿو ته اهو طريقو 100 ملي سيڪنڊن کان وڌيڪ نه آهي. @Mock - ھڪڙي ڪلاس ھڪڙي فيلڊ تي استعمال ڪيو ويندو آھي ھڪڙي ڏنل اعتراض کي ٺٺولي جي طور تي مقرر ڪرڻ لاء (اھو جونٽ لائبريري مان نه آھي، پر Mockito مان)، ۽ جيڪڏھن اسان کي ضرورت آھي، اسان ھڪڙي مخصوص صورتحال ۾ ٺٺولي جي رويي کي ترتيب ڏينداسين. ، سڌو سنئون امتحان واري طريقي ۾. @RunWith(MockitoJUnitRunner.class) - طريقو ڪلاس جي مٿان رکيل آهي. هي بٽڻ آهي ان ۾ هلندڙ ٽيسٽن لاءِ. رنر مختلف ٿي سگهن ٿا: مثال طور، هيٺيان آهن: MockitoJUnitRunner، JUnitPlatform، SpringRunner، وغيره). JUnit 5 ۾، @RunWith تشريح کي تبديل ڪيو ويو وڌيڪ طاقتور @ExtendWith تشريح. اچو ته نتيجن جي مقابلي لاء ڪجهه طريقن تي نظر رکون:
    • assertEquals(Object expecteds, Object actuals)- چيڪ ڪري ٿو ته ڇا منتقل ڪيل شيون برابر آهن.
    • assertTrue(boolean flag)- چيڪ ڪري ٿو ته ڇا منظور ٿيل قدر صحيح موٽائي ٿو.
    • assertFalse(boolean flag)- چيڪ ڪري ٿو ته ڇا منظور ٿيل قدر غلط موٽائي ٿو.
    • assertNull(Object object)- چيڪ ڪري ٿو ته ڇا اعتراض null آهي.
    • assertSame(Object firstObject, Object secondObject)- چيڪ ڪري ٿو ته ڇا منظور ٿيل قدر ساڳئي اعتراض ڏانهن اشارو ڪن ٿا.
    • assertThat(T t, Matcher<T> matcher)- چيڪ ڪري ٿو ته ڇا t ميچر ۾ بيان ڪيل شرط کي پورو ڪري ٿو.
    assertj مان هڪ مفيد موازن فارم پڻ آهي - assertThat(firstObject).isEqualTo(secondObject) هتي مون بنيادي طريقن جي باري ۾ ڳالهايو، ڇاڪاڻ ته باقي مٿيان مختلف تبديليون آهن.

    آزمائشي مشق

    هاڻي اچو ته هڪ مخصوص مثال استعمال ڪندي مٿين مواد کي ڏسو. اسان خدمت لاء طريقي جي جانچ ڪنداسين - تازه ڪاري. اسان ڊائو پرت تي غور نه ڪنداسين، ڇو ته اهو اسان جي ڊفالٽ آهي. اچو ته ٽيسٽ لاءِ هڪ اسٽارٽر شامل ڪريون:
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <version>2.2.2.RELEASE</version>
       <scope>test</scope>
    </dependency>
    تنهن ڪري، خدمت ڪلاس:
    @Service
    @RequiredArgsConstructor
    public class RobotServiceImpl implements RobotService {
       private final RobotDAO robotDAO;
    
       @Override
       public Robot update(Long id, Robot robot) {
           Robot found = robotDAO.findById(id);
           return robotDAO.update(Robot.builder()
                   .id(id)
                   .name(robot.getName() != null ? robot.getName() : found.getName())
                   .cpu(robot.getCpu() != null ? robot.getCpu() : found.getCpu())
                   .producer(robot.getProducer() != null ? robot.getProducer() : found.getProducer())
                   .build());
       }
    }
    8 - ڊيٽابيس مان اپڊيٽ ٿيل شئي کي ڇڪيو 9-14 - بلڊر ذريعي اعتراض ٺاهيو، جيڪڏهن ايندڙ شئي وٽ فيلڊ آهي - ان کي سيٽ ڪريو، جيڪڏهن نه - ڇڏي ڏيو جيڪو ڊيٽابيس ۾ آهي ۽ اسان جي ٽيسٽ کي ڏسو:
    @RunWith(MockitoJUnitRunner.class)
    public class RobotServiceImplTest {
       @Mock
       private RobotDAO robotDAO;
    
       private RobotServiceImpl robotService;
    
       private static Robot testRobot;
    
       @BeforeClass
       public static void prepareTestData() {
           testRobot = Robot
                   .builder()
                   .id(123L)
                   .name("testRobotMolly")
                   .cpu("Intel Core i7-9700K")
                   .producer("China")
                   .build();
       }
    
       @Before
       public void init() {
           robotService = new RobotServiceImpl(robotDAO);
       }
    1 — اسان جو رنر 4 — هڪ ماڪ 11 کي متبادل ڪندي ڊاؤ پرت کان سروس کي الڳ ڪريو — ڪلاس لاءِ هڪ ٽيسٽ ادارو مقرر ڪريو (جنهن کي اسين ٽيسٽ هيمسٽر طور استعمال ڪنداسين) 22 — هڪ سروس اعتراض سيٽ ڪريو جنهن کي اسين جانچينداسين.
    @Test
    public void updateTest() {
       when(robotDAO.findById(any(Long.class))).thenReturn(testRobot);
       when(robotDAO.update(any(Robot.class))).then(returnsFirstArg());
       Robot robotForUpdate = Robot
               .builder()
               .name("Vally")
               .cpu("AMD Ryzen 7 2700X")
               .build();
    
       Robot resultRobot = robotService.update(123L, robotForUpdate);
    
       assertNotNull(resultRobot);
       assertSame(resultRobot.getId(),testRobot.getId());
       assertThat(resultRobot.getName()).isEqualTo(robotForUpdate.getName());
       assertTrue(resultRobot.getCpu().equals(robotForUpdate.getCpu()));
       assertEquals(resultRobot.getProducer(),testRobot.getProducer());
    }
    هتي اسان ڏسون ٿا ٽيسٽ جي واضح تقسيم ٽن حصن ۾: 3-9 - سيٽنگ فڪسچر 11 - ٽيسٽ ٿيل حصو 13-17 - نتيجن کي جانچڻ وڌيڪ تفصيل: 3-4 - موڪا ڊاو لاءِ رويي کي ترتيب ڏيڻ 5 - مثال قائم ڪرڻ جنهن کي اسان پنهنجي معيار 11 جي مٿان اپڊيٽ ڪنداسين - طريقو استعمال ڪريو ۽ نتيجو مثال 13 وٺو - چيڪ ڪريو ته اهو صفر 14 ناهي - نتيجو ID ۽ مخصوص طريقي جي دليلن کي چيڪ ڪريو 15 - چيڪ ڪريو ته ڇا نالو اپڊيٽ ڪيو ويو آهي 16 - ڏسو cpu 17 جي نتيجي ۾ - جيئن ته اسان هن کي اپڊيٽ مثال جي فيلڊ ۾ مقرر نه ڪيو آهي، اهو ساڳيو ئي رهڻ گهرجي، اچو ته ان کي چيڪ ڪريو. يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 9اچو ته لانچ ڪريون: سڀ يونٽ جي جاچ بابت: ٽيڪنڪ، تصور، مشق - 10ٽيسٽ سائي آهي، توهان ڪڍي سگهو ٿا)) سو، اچو ته اختصار ڪريون: ٽيسٽنگ ڪوڊ جي معيار کي بهتر بڻائي ٿي ۽ ترقي جي عمل کي وڌيڪ لچڪدار ۽ قابل اعتماد بڻائي ٿي. تصور ڪريو ته اسان کي ڪيتري محنت ڪرڻي پوندي جڏهن سوين ڪلاس فائلن سان سافٽ ويئر کي ٻيهر ڊزائين ڪرڻ. هڪ دفعو اسان وٽ انهن سڀني طبقن لاءِ يونٽ ٽيسٽ لکجي ويا آهن، اسان اعتماد سان ريفيڪٽر ڪري سگهون ٿا. ۽ سڀ کان اهم، اهو اسان کي مدد ڪري ٿو آساني سان غلطيون ڳولڻ دوران ترقي. دوستو، اڄ اهو سڀ ڪجهه منهنجي لاءِ آهي: پسند ڪريو، تبصرو لکو))) يونٽ ٽيسٽنگ بابت سڀ: طريقا، تصور، مشق - 11
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION