ฉันควรใช้ Protractor หรือ Karma สำหรับการทดสอบ end-to-end หรือไม่? [ปิด]


124

ฉันควรใช้ Protractor หรือ Karma สำหรับการทดสอบ end-to-end หรือไม่?

Angular-seed ใช้ Protractor / Selenium WebDriver สำหรับ E2E แต่การสอนเชิงมุม - phonecat ใช้กรรม

ฉันอ่านว่าฉันควรใช้ Karma สำหรับการทดสอบหน่วยและ Protractor สำหรับ E2E ซึ่งดูเหมือนจะดี แต่ฉันคิดว่าฉันจะถามที่นี่เพื่อรับความคิดเห็นของนักพัฒนาคนอื่น ๆ


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

5
ทั้ง Karma และ Protractor ถูกใช้และแนะนำโดยทีม Angular แต่ด้วยสถานะของเอกสาร (กล่าวคือมีจำนวนมากและยากที่จะทราบว่ามีอะไรใหม่ล่าสุด) จึงยากที่จะทราบว่าจะใช้เพื่อจุดประสงค์ใด นี่เป็นคำถามที่ดีและคำตอบของ glpretre ก็ตรงกับสิ่งที่ฉันกำลังมองหาเช่นกัน
Matt

5
ฉันไม่คิดว่าคำถามนั้นกว้างเกินไป (Protractor vs Karma) เป็นกรอบที่เรากำลังพูดถึงที่นี่ไม่ใช่แค่ซอฟต์แวร์บางตัวดังนั้นคำถามจึงอยู่ในที่ที่ถูกต้อง
CCC

ดูคำตอบของฉันที่นี่สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับกรณีการใช้งานข้อดีและข้อ จำกัด ของ Karma และ Protractor: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev

ความเข้าใจของฉันคือ Protractor ไม่อนุญาตให้ทดสอบเพียงบางส่วนของแอปโดยไม่มีส่วนที่เหลืออยู่ (เช่นการเยาะเย้ย): รหัสทดสอบไม่ได้ทำงานในตัวแปล JS เดียวกันกับแอปพลิเคชัน ไม่มีการตรวจสอบระบบไฟล์สำหรับการแก้ไขซอร์สโค้ดและการเรียกใช้การทดสอบที่ได้รับผลกระทบซ้ำโดยอัตโนมัติ กรรมให้สิ่งเหล่านี้ จะส่งรหัสทดสอบ + รหัสแอปใน <script> s ไปยังเบราว์เซอร์เพื่อให้ทำงานในล่ามเดียวกันซึ่งอาจเป็นไปได้ แต่ไม่ได้ออกแบบมาสำหรับการทดสอบตั้งแต่ต้นจนจบด้วยเหตุการณ์เนทีฟราวกับว่าผู้ใช้จริงกำลังแสดงอยู่
robert4

คำตอบ:


179

ทีม AngularJS แนะนำให้ใช้ Protractor เพราะมันจะมาแทนที่ Angular Scenario Runner:

เชิงมุมสถานการณ์ที่วิ่งอยู่ในโหมดการบำรุงรักษา - หากคุณกำลังเริ่มโครงการใหม่เชิงมุมพิจารณาใช้ไม้โปรแทรกเตอร์

อ้างจากเอกสาร AngularJsเอกสาร

angular-phonecat แบบกวดวิชาได้รับการพัฒนาเมื่อนานมาแล้ว (ในปี 2011 เป็นหลัก) และยังไม่ได้รับการอัปเดตเพื่อใช้คุณลักษณะใหม่ ๆ ของ Angular เช่น Protractor

แก้ไข

ในเอกสาร Protractor - คำถามที่พบบ่อย :

ทำไมทั้ง Karma และ Protractor? ฉันจะใช้อันไหนเมื่อไหร่?

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

นี่คือบล็อกโพสต์ที่ยอดเยี่ยมพร้อมข้อมูลเพิ่มเติม


11
จากคำถามที่พบบ่อยเกี่ยวกับ Karma - Karma-runner.github.io/0.10/intro/faq.html - ฉันสามารถใช้ Karma เพื่อทำการทดสอบ end to end ได้หรือไม่ Karma ได้รับการออกแบบมาสำหรับการทดสอบระดับต่ำ (หน่วย) เป็นหลัก หากเป็นแอป AngularJS คุณสามารถใช้ Karma กับปลั๊กอินกรรม - สถานการณ์อย่างไรก็ตามเราขอแนะนำ Protractor สำหรับการทดสอบระดับสูง
mrwaim

หากฉันต้องการทดสอบหน่วยและทดสอบ e2e ฉันต้องกำหนดค่าสภาพแวดล้อมกรรมสำหรับการทดสอบหน่วยและไม้โปรแทรกเตอร์สำหรับการทดสอบ ui หรือการทดสอบ e2e
Sunil Garg

2
@SunilGarg ใช่คุณต้องทำบางทีโครงสร้างแอพเริ่มต้นของเราอาจช่วยคุณได้: github.com/glepretre/angular-requirejs-ready (ละเว้นข้อมูลเฉพาะของ requireJS หากคุณไม่ใช้)
glepretre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.