คำถามและคำตอบสัมภาษณ์ Junit [สำหรับผู้เริ่มต้นและผู้มีประสบการณ์]

เผยแพร่แล้ว: 2020-09-22

JUnit เป็นโซลูชันที่ยอดเยี่ยมสำหรับนักพัฒนาที่ทำงานกับภาษาการเขียนโปรแกรม Java สามารถใช้ในการทดสอบหน่วยและการทดสอบ UI เป็นหนึ่งในความสามารถที่เป็นที่ต้องการมากที่สุดสำหรับองค์กรที่ต้องการปรับปรุงคุณภาพโค้ดและความเร็วในการเขียนโปรแกรม บทความนี้จะกล่าวถึงคำถามสัมภาษณ์มาตรฐานของ JUnit เพื่อช่วยคุณในการเตรียมตัวและเข้าสู่การคัดเลือก!

คำถามและคำตอบสัมภาษณ์ 15 อันดับแรกของ JUnit

1. JUnit คืออะไร?

JUnit เป็นเฟรมเวิร์กที่ใช้สำหรับการทดสอบหน่วยของโค้ด Java ถือเป็นรากฐานของการทดสอบฝั่งนักพัฒนาในเอ็นจิ้น JVM ดังนั้น JUnit จึงเป็นส่วนสำคัญของสาขาการเขียนโปรแกรมและการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ

2. คุณเข้าใจอะไรจากการทดสอบและการทดสอบหน่วย

การทดสอบเป็นกระบวนการตรวจสอบว่าแอปพลิเคชันตรงตามข้อกำหนดและบรรลุฟังก์ชันที่ต้องการหรือไม่ การทดสอบหน่วยหมายถึงการประเมินการทำงานแต่ละรายการหรือหน่วยของแอปพลิเคชัน

3. แยกความแตกต่างระหว่างการทดสอบด้วยตนเองและแบบอัตโนมัติ

การทดสอบด้วยตนเองจะดำเนินการโดยไม่มีสคริปต์ทดสอบ และต้องใช้ความพยายามของมนุษย์โดยเฉพาะสำหรับขั้นตอนต่างๆ ที่เกี่ยวข้อง ในทางกลับกัน การทดสอบอัตโนมัติสามารถทำได้โดยไม่ต้องอาศัยความช่วยเหลือจากมนุษย์โดยใช้เครื่องมือเทคโนโลยีและโปรแกรมซอฟต์แวร์ การทดสอบอัตโนมัตินั้นถูกกว่าและใช้เวลาน้อยกว่าการทดสอบด้วยตนเอง นอกจากนี้ การทดสอบด้วยตนเองมีความน่าเชื่อถือน้อยกว่าเนื่องจากไม่สามารถตั้งโปรแกรมได้

4. คุณต้องเขียนกรณีทดสอบสำหรับทุกตรรกะหรือไม่?

กรณีทดสอบคือรหัสที่เขียนขึ้นเพื่อสร้างตรรกะของโปรแกรม ใน JUnit ไม่จำเป็นต้องเขียนกรณีทดสอบสำหรับทุกตรรกะ แต่สำหรับตรรกะที่อาจเสียหายได้เท่านั้น

กรณีทดสอบหน่วยจะประกอบด้วยการรวบรวมข้อมูลอินพุตและเอาต์พุตที่คาดหวัง แพ็คเกจ org.junit ประกอบด้วยคลาสและอินเทอร์เฟซมากมายที่จะช่วยคุณในการทดสอบหน่วย เช่น Assert, Test, Before, After เป็นต้น

5. พูดถึงตัวอย่างเครื่องมือที่คุณสามารถรวม JUnit?

JUnit เป็นเฟรมเวิร์กที่ใช้งานง่ายสำหรับการพัฒนา Java สามารถขยายและรวมเข้ากับ Eclipse IDE, Apache Ant และ Maven ได้อย่างง่ายดาย

6. ระบุส่วนขยาย JUnit ที่มีประโยชน์และอธิบายวัตถุประสงค์

มีส่วนขยาย JUnit หลักสี่รายการ ได้แก่ Cactus, JWebUnit, XMLUnit และ MockObject เราได้อธิบายการใช้งานโดยละเอียดด้านล่าง

  • กระบองเพชร: เป็นเฟรมเวิร์กสำหรับการทดสอบโค้ด Java ฝั่งเซิร์ฟเวอร์ที่ใช้การทดสอบภายในคอนเทนเนอร์ ระบบนิเวศของแคคตัสมีสององค์ประกอบ คือ Cactus Framework และ Cactus Integration Modules กรอบงานเป็นเครื่องมือที่ให้ API สำหรับการเขียนการทดสอบ ในขณะที่โมดูลการรวมดูแลส่วนหน้าด้วยความช่วยเหลือของปลั๊กอิน
  • JWebUnit: เฟรมเวิร์กที่ใช้จาวานี้มีอินเทอร์เฟซการทดสอบแบบรวมเป็นหนึ่งโดยผสมผสานความสามารถของ HtmlUnit และ Selenium JWebUnit ทำให้การนำทางเว็บแอปพลิเคชันเป็นเรื่องง่ายผ่านลิงก์ การตรวจสอบความถูกต้องของเนื้อหาตาราง การป้อนและการส่งแบบฟอร์ม และคุณลักษณะอื่นๆ นอกจาก Java API ระดับสูงแล้ว ยังช่วยให้สร้างการทดสอบอย่างรวดเร็วด้วยการยืนยันที่พร้อมใช้งาน
  • XMLUnit: มีคลาสส่วนขยายเดียวที่เรียกว่า XMLTestCase XMLUnit ยังมีคลาสที่รองรับที่อนุญาตให้ยืนยันความถูกต้องของชิ้นส่วน XML (คลาสตัวตรวจสอบความถูกต้อง) ความแตกต่างระหว่าง XML สองส่วน (Diff และ DetailedDiff) ผลลัพธ์ของการแปลง XML (คลาส Transformer) และอื่นๆ
  • MockObject: เมื่อเป็นไปไม่ได้หรือเป็นไปไม่ได้ที่จะรวมวัตถุจริงในการทดสอบหน่วย วัตถุจำลองสามารถพิสูจน์ได้ว่าเป็นประโยชน์ คุณสามารถจำลองพฤติกรรมของวัตถุที่ซับซ้อนและรวมเข้ากับขั้นตอนการเข้ารหัสต่อไปนี้:
  1. สร้างตัวอย่างวัตถุจำลอง
  2. กำหนดสถานะและความคาดหวัง
  3. เรียกใช้รหัสโดเมนโดยใช้วัตถุจำลองเป็นพารามิเตอร์
  4. ตรวจสอบความสม่ำเสมอ

7. คุณจะทดสอบวิธีการ 'มีการป้องกัน' และ 'ส่วนตัว' อย่างไร?

ในเมธอดที่ได้รับการป้องกัน คลาสทดสอบและคลาสเป้าหมายจะถูกประกาศในแพ็คเกจเดียวกัน อย่างไรก็ตาม ในวิธีส่วนตัว ไม่มีวิธีการทดสอบโดยตรง คุณอาจต้องเปลี่ยนวิธีการของคุณเป็น 'มีการป้องกัน' หรือทำการทดสอบด้วยตนเอง

8. จะเกิดอะไรขึ้นใน JUnit เมื่อประเภทการส่งคืนเป็น “สตริง”?

ในสถานการณ์นี้ การคอมไพล์จะผ่าน แต่การดำเนินการจะล้มเหลว สิ่งนี้จะเกิดขึ้นเนื่องจากวิธีการทดสอบ JUnit ทั้งหมดได้รับการออกแบบมาเพื่อส่งคืน “เป็นโมฆะ”

9. กำหนด (i) การแข่งขัน (ii) ชุดทดสอบ (iii) นักวิ่งทดสอบ (iv) คลาส JUnit

(i) ฟิกซ์เจอร์ใช้เป็นพื้นฐานในการดำเนินการทดสอบ เพื่อสร้างความสามารถในการทำซ้ำของผลลัพธ์ ฟิกซ์เจอร์ทดสอบประกอบด้วยสถานะคงที่ของชุดออบเจ็กต์ วิธีการรวมถึง:

  • setUp(): มันทำงานก่อนการเรียกใช้การทดสอบ
  • tearDown(): มันทำงานหลังจากวิธีการทดสอบ

(ii) นักวิ่งทดสอบ: ดำเนินการกรณีทดสอบ

(iii) JUnit Classes: ประกอบด้วยวิธีการที่ใช้ในการเขียนและทดสอบ JUnits

(iv) ชุดทดสอบคือชุดหรือชุดของกรณีทดสอบหน่วยที่จะเรียกใช้ร่วมกัน คุณสามารถรันการทดสอบชุดใน JUnit โดยใช้คำอธิบายประกอบ @Suite หรือ @RunWith

อ่าน: โครงการระบบการจัดการห้องสมุดใน Java

10. พูดถึงหมายเหตุประกอบ JUnit ที่ใช้บ่อยสองสามรายการ

คำอธิบายประกอบเป็นเพียงเมตาแท็กที่คุณสามารถเพิ่มลงในโค้ดของคุณได้ คำอธิบายประกอบ @Test ทำเครื่องหมายวิธีการเฉพาะว่าเป็นวิธีการทดสอบ คำอธิบายประกอบที่มีประโยชน์อื่นๆ ได้แก่ @Before, @BeforeClass, @After และ @AfterClass และ @Ignores ในการนำการทดสอบ JUnit ไปใช้ คุณจะต้องทราบถึงความสำคัญของคำอธิบายประกอบเหล่านี้ ดังนั้น เรามาทำความรู้จักกับพวกเขาทีละคนกัน

  • การทดสอบ: คำอธิบายประกอบนี้บอก JUnit ว่าสามารถเรียกใช้เมธอด public void เป็นกรณีทดสอบได้ โดยพื้นฐานแล้วจะใช้แทน org.junit.TestCase
  • ก่อน: หากคุณต้องการดำเนินการคำสั่งใดๆ (เช่น เงื่อนไขเบื้องต้น) ก่อนกรณีทดสอบใดโดยเฉพาะ ให้ใช้ @Before คำอธิบายประกอบนี้อนุญาตให้คุณเรียกใช้วัตถุที่คล้ายกันก่อนวิธีทดสอบ
  • ก่อนคลาส: คุณสามารถใช้คำอธิบายประกอบ @BeforeClass ใน JUnit เพื่อเรียกใช้คำสั่งก่อนกรณีทดสอบทั้งหมด
  • After: ทำให้บางคำสั่งทำงานหลังจากแต่ละกรณีทดสอบ เช่น ลบไฟล์ชั่วคราว รีเซ็ตตัวแปร ฯลฯ
  • After Class: คำอธิบายประกอบ @AfterClass ช่วยให้คุณดำเนินการคำสั่งหลังจากกรณีทดสอบทั้งหมด ตัวอย่างเช่น การปล่อยทรัพยากรทั้งหมดหลังจากดำเนินการเสร็จสิ้น
  • ละเว้น: ใช้เพื่อละเว้นคำสั่งบางอย่างในระหว่างการดำเนินการ ตัวอย่างเช่น การปิดใช้งานกรณีทดสอบ

อ่านเพิ่มเติม : คำถามสัมภาษณ์ Java

11. อธิบายประเภทต่าง ๆ ของคลาส JUnit

Assert, TestCase และ TestResult เป็นคลาส JUnit ที่สำคัญบางส่วน ยืนยันให้วิธีการกรณีทดสอบ TestCase ประกอบด้วยกรณีทดสอบ ซึ่งกำหนดฟิกซ์เจอร์เพื่อดำเนินการทดสอบหลายรายการ TestResult มีวิธีการรวบรวมผลลัพธ์

12. คุณเขียนแบบทดสอบหน่วยเมื่อใด

ในวงจรการพัฒนาทั่วไป การทดสอบหน่วยจะถูกเขียนก่อนโค้ด แนวทางปฏิบัตินี้ช่วยให้นักพัฒนาสามารถรักษาคุณภาพของโค้ดได้

13. เหตุใดคุณจึงควรละเว้นจากการใช้ System.out.printIn() สำหรับการดีบัก?

หากคุณใช้ System.out.printIn() เพื่อดีบักโค้ดของคุณ มันจะเป็นประโยชน์ในระยะยาว ทุกครั้งที่รันโปรแกรม จะส่งผลให้มีการสแกนเอาท์พุตทั้งหมดด้วยตนเองเพื่อให้แน่ใจว่าโค้ดทำงานอย่างถูกต้อง ดังนั้นจึงต้องใช้เวลาค่อนข้างน้อยในการเขียนโค้ดวิธี JUnit และทำการทดสอบกับไฟล์คลาส

14. ขยะทดสอบใน JUnit หายไปไหน?

ผู้ทำการทดสอบถือการอ้างอิงตลอดระยะเวลาของการทดสอบ ในกรณีของ Extended Test ที่มี Test Instance จำนวนมาก จะไม่สามารถเก็บขยะได้จนกว่าจะสิ้นสุดการทดสอบ เราสามารถใช้ tearDown() เพื่อรวบรวมขยะก่อนที่การทดสอบจะเสร็จสิ้น ในวิธีนี้ เราตั้งค่าอ็อบเจ็กต์เป็นโมฆะอย่างชัดเจน

15. คุณติดตั้ง Junit อย่างไร?

ขั้นตอนแรกคือการดาวน์โหลด JUnit 5 ซึ่งเป็นเวอร์ชันล่าสุดของ JUnit (ซึ่งจะเป็นไฟล์ชื่อ junit.zip) เราจะต้องคลายซิปไฟล์การแจกจ่ายไปยังไดเร็กทอรี %JUNIT_HOME% จากนั้นเราจะเพิ่ม JUnit ใน classpath

ต่อไปเราจะทดสอบการติดตั้ง สิ่งนี้จะเกี่ยวข้องกับการรันการทดสอบตัวอย่าง (ไม่ได้อยู่ในไฟล์ junit.jar แต่อยู่ในไดเร็กทอรีการติดตั้ง) ที่แจกจ่ายกับ Junit สุดท้ายนี้ เราจะยืนยันว่าการทดสอบทั้งหมดผ่านด้วยข้อความ "ตกลง" หากไม่เป็นเช่นนั้น เราจะกลับไปตรวจสอบว่า junit.jar อยู่ใน classpath หรือไม่

ชำระเงิน: วิธีเขียนโค้ด คอมไพล์ และรัน Java Projects

บทสรุป

ด้วยคำถามสัมภาษณ์ของ JUnit ข้างต้น คุณสามารถปัดฝุ่นแนวคิดของคุณเพื่อเตรียมพร้อมสำหรับงานนักพัฒนา ตำแหน่งเช่นวิศวกรทดสอบระบบอัตโนมัติและวิศวกรซอฟต์แวร์ยังรวม JUnit ไว้ในชุดทักษะที่ต้องการ นายหน้าต้องการวัดความรู้ด้านเทคนิคและความสามารถในการสื่อสารของคุณ ดังนั้น เนื้อหาของคำตอบและวิธีนำเสนอของคุณจะสร้างความแตกต่างได้

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์แบบฟูลสแตก โปรดดูประกาศนียบัตร PG ของ upGrad & IIIT-B ด้านการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ

ลงจอดบนงานในฝันของคุณ

UPGRAD และ IIIT-BANGALORE'S PG DIPLOMA ในการพัฒนาสแต็คเต็มรูปแบบ
สมัครวันนี้