ฉันควรแยกการทดสอบหน่วยและการทดสอบการรวมเข้าด้วยกันหรือไม่


17

ฉันต้องเขียนการทดสอบหน่วยและการทดสอบการรวมสำหรับโครงการ

  • ควรทำการทดสอบทั้งหมดในโฟลเดอร์การทดสอบเดียวหรือไม่?
  • หรือการทดสอบหน่วยและการทดสอบการรวมเข้าด้วยกันควรอยู่ในโฟลเดอร์การทดสอบแยกกันหรือไม่?
  • ฉันควรหรือแม้กระทั่งใส่ไว้ในโครงการแยก ?

หากฉันรวมมันเข้าด้วยกันมีข้อดีหรือข้อเสียของวิธีการนี้หรือไม่?


1
หากคุณทำงานในสภาพแวดล้อม CI สิ่งสำคัญคือพวกเขาสามารถระบุได้อย่างง่ายดาย (ตามคุณสมบัติ ฯลฯ ) เนื่องจากการทดสอบการรวมไม่ได้ทำงานบนเซิร์ฟเวอร์สร้างเสมอ
Robbie Dee

คำตอบ:


18

โดยทั่วไป: ใช่คุณควรใส่การทดสอบการรวมและการทดสอบหน่วยในโฟลเดอร์อื่น บ่อยครั้งที่โปรแกรมเมอร์ไม่เขียนเส้นแบ่งที่ชัดเจนระหว่างการทดสอบสองประเภทนี้และเพียงแค่เขียนว่าการทดสอบประเภทใดมีประโยชน์ แต่การทดสอบบูรณาการมีแนวโน้มที่จะช้าลงเพราะมักจะเกี่ยวข้องกับ:

  • แบบสอบถามฐานข้อมูล
  • คำขอเครือข่าย
  • พฤติกรรมขึ้นอยู่กับเวลา
  • ข้อมูลจำนวนมาก

ในทางตรงกันข้ามการทดสอบหน่วยจะเยาะเย้ยการดำเนินการที่มีค่าใช้จ่ายสูงดังนั้นการทดสอบหน่วยมักจะทำงานได้อย่างรวดเร็ว

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

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

สิ่งที่ช่วยให้โปรแกรมเมอร์รับข้อเสนอแนะได้อย่างรวดเร็วเป็นสิ่งที่ดี ชุดทดสอบที่ครอบคลุมที่สุดไม่สำคัญว่าจะไม่ได้รับการดำเนินการอย่างสม่ำเสมอ

อ่านเพิ่มเติม:


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

@ihebiheb ใน Java การใช้แพคเกจการมองเห็นค่อนข้างขมวดคิ้ว ในบางกรณีอาจมีประโยชน์ในการใช้และเข้าถึง API เหล่านี้จากการทดสอบหน่วย แต่โดยทั่วไปนั้นไม่จำเป็น การทดสอบในรูปแบบบูรณาการไม่จำเป็นต้องเข้าถึงสมาชิกแพคเกจส่วนตัว การที่จะทำการทดสอบในโครงการ Maven แยกต่างหากหรือไม่นั้นขึ้นอยู่กับว่าคุณต้องการเรียกใช้และปรับใช้อย่างไร ฉันไม่ได้เข้าสู่ Java / Maven เพื่อที่จะสามารถบอกคุณได้ว่าอะไรเหมาะสมที่นี่
amon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.