การทดสอบหน่วยสำหรับการพัฒนาปลั๊กอิน


17

ฉันต้องใช้การทดสอบหน่วยสำหรับปลั๊กอินตัวใดตัวหนึ่งของฉัน ฉันเพิ่งออกแบบมันลงในคลาสดังนั้นการทดสอบหน่วยควรใช้ง่ายขึ้นในขณะนี้

กลยุทธ์ที่มีประสิทธิภาพในการทดสอบปลั๊กอินของฉันคืออะไร ฉันต้องการวิธีใช้ฟังก์ชั่นของ WordPress ที่ใช้ในปลั๊กอิน แต่ฉันไม่ควรต้องการไซต์ WordPress ที่ทำงานอยู่ (แค่ทดสอบข้อมูลใน DB AFAIK) ใช่ไหม?

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

คำตอบ:


14

ในฐานะที่เป็นวิศวกรซอฟต์แวร์อดีตที่สร้างธุรกิจขนาดใหญ่ที่มีหน่วยงานแบบอินเทอร์แอคทีฟฉันขอให้คุณลองนึกถึงการทดสอบเมื่อพัฒนาสำหรับ Wordpress:

  1. การทดสอบหน่วยของคุณควรทดสอบจำนวนพฤติกรรมที่น้อยที่สุดที่คลาสสามารถทำได้ แต่ละชั้นควรจะสามารถทดสอบเป็นอิสระจาก Wordpress หากคุณมี Wordpress พึ่งพาพิจารณาการสร้างวัตถุจำลองและ / หรือวิธีการในการทดสอบของคุณเพื่อหลีกเลี่ยงปัญหานี้ ในที่สุดนี้จะเปลี่ยนวิธีที่คุณเขียนรหัสของคุณเล็กน้อย - แต่มันจะสามารถทดสอบได้มากขึ้น ตามปกติไม่มีอาหารกลางวันฟรี

  2. เมื่อคุณได้รับการทดสอบการทำงานถึงระดับนี้เป็นที่ที่คุณสามารถทดสอบโค้ดของคุณด้วยการขึ้นต่อกันของ Wordpress นี่คือที่ที่คุณจะทดสอบว่าปลั๊กอินของคุณทำการบริการตามที่ควรจะเป็นจริง

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

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


1
เฮ้อีธานขอบคุณสำหรับคำตอบอย่างมืออาชีพ ไม่สามารถคาดหวังได้จากชุมชนนี้น้อยลง :) ฉันจะพยายามเขียน Unit Tests สำหรับชั้นเรียนของฉันและสร้างวัตถุจำลองเพื่อทำงานกับฟังก์ชันของ WordPress ขั้นตอนที่ 2 เป็นส่วนที่ยากสำหรับฉันเนื่องจากฉันจะต้องมี WordPress instace สำหรับการทดสอบอัตโนมัติบางประเภทซึ่งฉันสามารถเริ่มใช้ Selenium ได้ในภายหลัง ฉันจะเริ่มต้นด้วย PHPUnit และดูว่ามันไปอย่างไร ขอบคุณ!
Fernando Briano

คำตอบที่สมบูรณ์แบบ!
rsman

8

ฉันไม่ได้ทำเอง แต่มีสภาพแวดล้อมการทดสอบสำหรับการทดสอบหน่วย WordPress มันมีไว้สำหรับการทดสอบหลัก แต่มันสามารถปรับให้เข้ากับการทดสอบปลั๊กอิน

ข้อมูลเพิ่มเติมที่นี่:

http://codex.wordpress.org/Automated_Testing

http://svn.automattic.com/wordpress-tests/


-1

ฉันเพิ่งสร้างบทช่วยสอนที่ใช้ข้อมูลจาก googling ของฉันเพื่อแสดงวิธีการ:

  1. ใช้การทดสอบหลักของ wordpress core
  2. ซ่อนคำเตือนที่ไม่สนับสนุน php / เซสชันส่งคำเตือน
  3. แสดงวิธีตั้งค่าตัวเลือกปลั๊กอินในการทดสอบ
  4. ใช้ wp core เดียวกันทำการทดสอบหน่วยเพื่อทดสอบหลายปลั๊กอิน

การสอนอยู่ที่นี่ฉันหวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.