メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การรัน Test ใน Jenkins: เพิ่ม Test Step

ในบทที่แล้ว เราได้สร้าง Jenkins Job สำหรับ Build โปรเจกต์ PHP และติดตั้ง Dependencies ในบทนี้ เราได้เพิ่มขั้นตอนการรัน Unit Tests โดยใช้ "Execute Shell" step แล...

การรัน Test ใน Jenkins: เพิ่ม Test Step

ในบทที่แล้ว เราได้สร้าง Jenkins Job แรกสำหรับ Build โปรเจกต์ PHP ของเรา ซึ่งมีขั้นตอนง่ายๆ คือการติดตั้ง Dependencies ด้วย Composer ในบทนี้ เราจะเพิ่มขั้นตอนการรัน Unit Tests เข้าไปใน Jenkins Job เพื่อให้มั่นใจว่าโค้ดของเราทำงานได้อย่างถูกต้องทุกครั้งที่มีการเปลี่ยนแปลง

การเพิ่ม Execute Shell Step

เราจะใช้ "Execute Shell" step ใน Jenkins เพื่อรันคำสั่ง phpunit ซึ่งเป็นคำสั่งที่ใช้ในการรัน Unit Tests ในโปรเจกต์ PHP ของเรา

  1. เข้าไปที่ Jenkins Dashboard และเลือก Job ที่เราสร้างไว้ในบทที่แล้ว

  2. คลิกที่ "Configure" เพื่อแก้ไข Job

  3. เลื่อนลงมาที่ส่วน "Build"

  4. คลิกที่ "Add build step" และเลือก "Execute shell"

เมื่อเราเลือก "Execute shell" จะมีช่องให้เราใส่คำสั่ง Shell ที่ต้องการรัน

การรัน phpunit

ในช่อง "Command" ของ "Execute shell" step ให้เราใส่คำสั่ง ./vendor/bin/phpunit

./vendor/bin/phpunit

คำสั่งนี้จะรัน PHPUnit โดยใช้ไฟล์ phpunit ที่อยู่ใน directory vendor/bin ซึ่ง Composer ได้สร้างไว้ให้เราตอนที่เราติดตั้ง Dependencies ในบทที่แล้ว

ทำไมต้อง ./vendor/bin/phpunit?

โดยทั่วไปแล้ว เมื่อเราติดตั้ง package ด้วย Composer, Composer จะสร้างไฟล์ executable (เช่น phpunit) ไว้ใน directory vendor/bin เพื่อให้เราสามารถเรียกใช้งาน command line tools ที่ package นั้นๆ เตรียมไว้ให้ การใช้ ./vendor/bin/phpunit เป็นการบอกระบบว่าให้มองหาไฟล์ phpunit ใน directory vendor/bin ปัจจุบัน (./ หมายถึง current directory)

ข้อควรระวัง: หากคุณไม่ได้ติดตั้ง PHPUnit ผ่าน Composer (เช่น ติดตั้ง global), คุณอาจจะต้องใช้คำสั่ง phpunit เฉยๆ หรือระบุ path ที่ถูกต้องไปยังไฟล์ executable ของ PHPUnit

การดูผลลัพธ์ Test ใน Jenkins

หลังจากที่เราเพิ่ม Test Step แล้ว ให้คลิกที่ "Save" เพื่อบันทึกการเปลี่ยนแปลง

จากนั้นคลิกที่ "Build Now" เพื่อเริ่ม Build ใหม่

เมื่อ Build เสร็จสิ้น ให้คลิกที่หมายเลข Build (เช่น "#2") เพื่อดูรายละเอียดของ Build นั้น

คุณจะเห็น Console Output ซึ่งแสดงผลลัพธ์ของการรันคำสั่งต่างๆ รวมถึงผลลัพธ์ของ PHPUnit

ตัวอย่าง Console Output เมื่อ Test ผ่าน:

[INFO] Finished: SUCCESS

คุณจะเห็นว่ามีการรัน Test และแสดงผลลัพธ์ (จำนวน tests ที่รัน, จำนวน assertions, และเวลาที่ใช้) หาก Test ทั้งหมดผ่าน Jenkins จะแสดงว่า Build "SUCCESS"

ตัวอย่าง Console Output เมื่อ Test ไม่ผ่าน:

There was 1 failure:

1) ExampleTest::testBasicTest
This test failed.

/var/jenkins_home/workspace/my-php-project/tests/ExampleTest.php:15

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

ถ้ามี Test ไม่ผ่าน Jenkins จะแสดงรายละเอียดของ Test ที่ไม่ผ่าน และแสดงว่า Build "FAILURE"

Jenkins จะทำอย่างไรเมื่อ Test ไม่ผ่าน?

โดย default, Jenkins จะ mark build เป็น "FAILURE" ทันทีที่คำสั่งใดๆ ใน build step returns a non-zero exit code (ซึ่ง PHPUnit จะทำเมื่อมี test fail) นั่นหมายความว่า Jenkins จะหยุด build process ทันที และแจ้งเตือนว่ามีปัญหาเกิดขึ้น

การแก้ไขปัญหาเมื่อ Test ไม่ผ่าน

เมื่อ Test ไม่ผ่าน สิ่งแรกที่เราต้องทำคือการอ่าน Console Output อย่างละเอียด เพื่อดูว่า Test ตัวไหนที่ไม่ผ่าน และเพราะอะไร

จากนั้นให้ทำการแก้ไขโค้ดในส่วนที่เกี่ยวข้องกับ Test ที่ไม่ผ่าน และ Commit การเปลี่ยนแปลงไปยัง Repository ของเรา

Jenkins จะทำการ Build ใหม่อัตโนมัติ (ถ้าเราตั้งค่าไว้) หรือเราสามารถกด "Build Now" เพื่อเริ่ม Build ใหม่ได้ทันที

ทำซ้ำขั้นตอนเหล่านี้จนกว่า Test ทั้งหมดจะผ่าน และ Jenkins จะแสดงว่า Build "SUCCESS"

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการเพิ่ม Test Step ใน Jenkins Job เพื่อรัน Unit Tests ซึ่งเป็นขั้นตอนสำคัญในการทำ Continuous Integration (CI) การรัน Test อัตโนมัติช่วยให้เราสามารถตรวจจับปัญหาในโค้ดได้อย่างรวดเร็ว และมั่นใจว่าโค้ดของเราทำงานได้อย่างถูกต้องเสมอ

ในบทถัดไป เราจะเรียนรู้วิธีการตั้งค่า Email Notifications เพื่อให้ Jenkins แจ้งเตือนเราเมื่อ Build สำเร็จหรือล้มเหลว

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る