1.1 ห้องสมุด Mockito
วันนี้เราจะทำความคุ้นเคยกับการทดสอบขั้นสูง โดยเฉพาะอย่าง ยิ่งกับ ห้องสมุด Mockito อย่าแม้แต่จะคิดที่จะออกจากธุรกิจนี้
ประการ แรกไลบรารีนี้เป็นมาตรฐานใน การทดสอบ สปริง ซึ่งเป็นมาตรฐานในอุตสาหกรรมการพัฒนาแบ็กเอนด์ของ Java
ประการที่สองคุณจะต้องเขียนการทดสอบสำหรับ Spring code ของคุณ วิธีเดียวที่จะเข้าใจว่าแบ็กเอนด์ที่คุณเขียนทำงาน ได้ตามปกติคือการเรียกเมธอดของ API และการทำแบบทดสอบนั้นง่ายกว่าแบบไม่มีแบบทดสอบถึง 10 เท่า คุณจะเห็นด้วยตัวคุณเอง
คุณสามารถ เพิ่มไลบรารี Mockito ให้กับคุณpom.xml
โดยใช้รหัส:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
ซอร์สโค้ดทั้งหมดสำหรับโครงการ Mockito สามารถพบได้ในGitHub
1.2 วัตถุจำลอง
Mockito นี้คืออะไรและทำไมมันถึงดี?
ในกระบวนการพัฒนาและการพัฒนาการทดสอบ บ่อยครั้งที่จำเป็นต้องใส่ "ต้นขั้ว" บางอย่างลงในโค้ดแทนที่จะเป็นวัตถุจริง
ตัวอย่างเช่น รหัสที่ทำงานกับฐานข้อมูลได้รับการทดสอบและเปลี่ยนแปลงบางอย่างที่นั่น เป็นการดีที่ก่อนการทดสอบแต่ละครั้งสถานะของฐานข้อมูลนี้จะเหมือนกัน (มิฉะนั้นการทดสอบจะแตกต่างกัน) และฉันต้องการฐานให้เรียบง่ายขึ้น เพื่อย้อนกลับสถานะเหล่านี้อย่างรวดเร็ว
หรือ ตัวอย่างเช่น คุณกำลังทดสอบรหัสที่ส่ง SMS ที่เป็นประโยชน์ และสำหรับการส่งจดหมายโดยตรง เขาใช้ SMS Gateway แบบชำระเงิน เป็นการดีที่จะสอดเกตเวย์เสมือนเข้าไปเพื่อทดสอบรหัสเพื่อไม่ให้ส่ง SMS หลายร้อยรายการไปยังคนที่เข้าใจยาก
หรือรหัสของคุณกำลังร้องขอข้อมูลจากเว็บเซิร์ฟเวอร์อื่นที่ไม่มีอยู่ในเซิร์ฟเวอร์ทดสอบ หรือคุณเขียนรหัสสำหรับการชำระเงินออนไลน์ที่ต้องทดสอบ 50 ครั้ง จากนั้นอนุญาตให้ใช้ในช่องทางการเงินจริงเท่านั้น
ฉันคิดว่าคุณเข้าใจ ... วัตถุเสมือนหรือที่เรียกว่าวัตถุต้นขั้วเป็นสิ่งที่มีประโยชน์มาก
และนี่คือความยาก - Java มีการพิมพ์แบบคงที่ ซึ่งหมายความว่าในการReadDatabase
กำหนดการอ้างอิงวัตถุให้กับตัวแปรแทนที่จะ เป็นวัตถุประเภท VirtualDatabase
คุณต้องสืบทอดคลาสVirtualDatabase
จากRealDatabase
จากนั้นปรากฎว่าคลาสมีRealDatabase
เมธอดส่วนตัวและตัวแปรมากมายที่เก็บการอ้างอิงไปยังวัตถุจริงอื่น ๆ และคุณไม่สามารถเขียนต้นขั้วปกติด้วยวิธีนี้ ในทางทฤษฎีเป็นสิ่งที่ดี แต่ในทางปฏิบัติมันเป็นทางตัน
และนี่คือการช่วยเหลือ ( คุณสามารถอ่านDynamicProxy
รายละเอียดเพิ่มเติม) ซึ่งปรากฏใน Java 5 อีกครั้ง ช่วยให้คุณสร้างวัตถุเสมือนที่คอมไพเลอร์ไม่มีข้อตำหนิ
วัตถุเสมือนดังกล่าวเรียกว่าจำลอง (จากคำว่าจำลอง - เลย์เอาต์) ห้องสมุด Mockito สามารถยกระดับผลงานด้วยแบบจำลองเหล่านี้ให้สูงขึ้นเป็นประวัติการณ์ ดังนั้นชื่อของห้องสมุด
1.3 @ExtendWith คำอธิบายประกอบ
ไลบรารี Mockito ทำงานได้ดีกับ JUnit ซึ่งถือได้ว่าเป็นส่วนเสริมของมัน
มีสองวิธีในการเปิดใช้งานไลบรารี Mockito ในการทดสอบหน่วยของคุณ วิธีแรกคือการเพิ่มคำอธิบายประกอบพิเศษ:
@ExtendWith(MockitoExtension.class)
public class MockitoAnnotationTest {
...
}
วิธีที่สองคือการเปิดใช้งานโดยเรียกใช้เมธอดopenMocks()
:
public class MockitoAnnotationTest {
@BeforeEach
public void init() {
MockitoAnnotations.openMocks(this);
}
}
ส่วนใหญ่คุณจะเห็นตัวเลือกแรก แต่บางครั้งก็มีประโยชน์ที่จะรู้ว่ามีตัวเลือกที่สอง
GO TO FULL VERSION