เครื่องมือทดสอบบรรทัดคำสั่ง PHPUnit ถูกเรียกผ่านคำสั่ง phpunit รหัสต่อไปนี้แสดงวิธีการรันการทดสอบผ่านเครื่องมือทดสอบบรรทัดคำสั่ง PHPUnit
phpunitArrayTest.php
PHPUnit 2.3.0 โดย Sebastian Bergmann
เวลา: 0.067288
ตกลง (2 การทดสอบ)
สำหรับการทดสอบแต่ละครั้ง เครื่องมือทดสอบบรรทัดคำสั่ง PHPUnit จะพิมพ์อักขระที่ระบุกระบวนการ:
· การทดสอบที่สำเร็จจะพิมพ์ "."
·เมื่อรันวิธีทดสอบ จะเกิดความล้มเหลวในการยืนยันและพิมพ์ "F"
·เมื่อรันวิธีทดสอบ จะเกิดข้อผิดพลาดและพิมพ์ "E"
·การทดสอบไม่เสร็จสิ้นหรือการทดสอบไม่พิมพ์ "I" (ดูบท "การทดสอบที่ยังไม่เสร็จ" ท้ายหนังสือเล่มนี้)
PHPUnit สามารถแยกแยะระหว่างความล้มเหลวและข้อผิดพลาดได้ ความล้มเหลวคือการละเมิดการยืนยัน PHPUnit และข้อผิดพลาดคือข้อยกเว้นที่ไม่คาดคิดหรือข้อผิดพลาด PHP บางครั้งความแตกต่างนี้ก็มีประโยชน์เพราะข้อผิดพลาดนั้นแก้ไขได้ง่ายกว่าความล้มเหลว หากคุณมีรายการปัญหาจำนวนมาก เป็นความคิดที่ดีที่จะแก้ไขข้อผิดพลาดทั้งหมดก่อนแล้วจึงดูว่ายังมีข้อผิดพลาดอยู่หรือไม่
มาดูตัวเลือกเครื่องมือทดสอบบรรทัดคำสั่งโค้ดด้านล่าง:
phpunit --help
PHPUnit 2.3.0 โดย Sebastian Bergmann
การใช้งาน: phpunit [สวิตช์] UnitTest [UnitTest.php]
--coverage-data <file> เขียนข้อมูลโค้ดครอบคลุมในรูปแบบ raw ไปยังไฟล์
--coverage-html <file> เขียนข้อมูลโค้ดครอบคลุมในรูปแบบ HTML ลงไฟล์
--coverage-text <file> เขียนข้อมูลโค้ดครอบคลุมในรูปแบบข้อความไปยังไฟล์
--testdox-html <file> เขียนเอกสาร Agile ในรูปแบบ HTML ลงในไฟล์
--testdox-text <file> เขียนเอกสาร Agile ในรูปแบบข้อความไปยังไฟล์
--log-xml <file> บันทึกความคืบหน้าของการทดสอบในรูปแบบ XML ไปยังไฟล์
--loader <loader> การใช้งาน TestSuiteLoader ที่จะใช้
--skeleton สร้างคลาสโครงกระดูก UnitTest สำหรับหน่วยใน Unit.php
--wait รอการกดแป้นพิมพ์หลังการทดสอบแต่ละครั้ง
--help พิมพ์ข้อมูลการใช้งานนี้
--version พิมพ์เวอร์ชันและออก
phpunit UnitTest
รันการทดสอบที่จัดทำโดยคลาส UnitTest ซึ่งควรกำหนดไว้ในไฟล์ต้นฉบับ UnitTest.php
คลาส UnitTest จะต้องสืบทอดคลาส PHPUnit2_Framework_TestCase หรือจัดเตรียมชุดวิธีการคงที่สาธารณะและส่งคืนคลาสของอ็อบเจ็กต์ PHPUnit2_Framework_Test (เช่น อินสแตนซ์ของคลาส PHPUnit2_Framework_TestSuite)
phpunit UnitTest UnitTest.php
รันการทดสอบที่ได้รับจากคลาส UnitTest ซึ่ง ถูกกำหนดไว้ในคำสั่ง ในซอร์สไฟล์ที่ระบุ (UnitTest.php)
--coverage-data, --coverage-html และ --coverage-text
ควบคุมการวิเคราะห์และการรวบรวมข้อมูลการครอบคลุมโค้ดสำหรับการทดสอบที่รันอยู่ (ดูส่วนการวิเคราะห์การครอบคลุมโค้ดท้ายหนังสือเล่มนี้)
--testdox-html และ --testdox- text
สร้างเอกสาร Agile สำหรับการรันการทดสอบในรูปแบบ HTML หรือข้อความธรรมดา (ดูบท "การใช้การทดสอบอื่นๆ" ท้ายหนังสือเล่มนี้)
--log-xml
สร้างไฟล์บันทึกในรูปแบบ XML สำหรับการรันการทดสอบ
ตัวอย่างถัดไปแสดงไฟล์บันทึก XML ที่สร้างขึ้นสำหรับการทดสอบใน ArrayTest
<?xml version="1.0" encoding="UTF-8"?>
<ห้องสอบ><
<ชื่อชุดทดสอบ = "ArrayTest" การทดสอบ = "2" ความล้มเหลว = "0" ข้อผิดพลาด = "0" เวลา = "0.020026">
<ชื่อกรณีทดสอบ = "testNewArrayIsEmpty" class = "ArrayTest" เวลา = "0.014449"/>
<ชื่อทดสอบ = "testArrayContainsAnElement" class = "ArrayTest" เวลา = "0.005577"/>
</ชุดทดสอบ><
</testsuites>
ไฟล์บันทึก XML ต่อไปนี้ถูกสร้างขึ้นสำหรับการทดสอบสองครั้งของคลาสการทดสอบชื่อ FailureErrorTest หนึ่งรายการคือ testFailure และอีกรายการคือ testError ข้อมูลนี้แสดงให้เห็นว่าความล้มเหลวและข้อผิดพลาดแสดงแยกกันอย่างไร
<?xml version="1.0" encoding="UTF-8"?>
<ห้องสอบ><
<ชื่อ testsuite = "FailureErrorTest" การทดสอบ = "2" ล้มเหลว = "1" ข้อผิดพลาด = "1" เวลา = "0.013603">
<ชื่อกรณีทดสอบ = "testFailure" class = "FailureErrorTest" time = "0.011872" >
<ข้อความล้มเหลว = "" type = PHPUnit2_Framework_AssertionFailedError" > </failure >
</ชุดทดสอบ><
<ชื่อกรณีทดสอบ = "testError" class = "FailureErrorTest" time = "0.001731" >
<ข้อความแสดงข้อผิดพลาด = "" type = "ข้อยกเว้น" > </ ข้อผิดพลาด >
</ชุดทดสอบ><
</ชุดทดสอบ><
</ชุดทดสอบ>
--loader
ระบุตัวโหลดชุดทดสอบที่จะใช้
ตัวโหลดชุดทดสอบมาตรฐานจะค้นหาไฟล์ต้นฉบับในไดเร็กทอรีการทำงานปัจจุบันและในพาธที่กำหนดโดยคำสั่งการกำหนดค่า include_path ของ PHP ตามกฎการตั้งชื่อของ PEAR ไฟล์ต้นฉบับที่แมปกับชื่อคลาสในรูปแบบ Project_Package_Class คือ Project/Package/Class.php
--skeleton
สร้างโครงกระดูกสำหรับคลาสกรณีทดสอบที่เรียกว่า UnitTest (ในไฟล์ UnitTest.php) สำหรับคลาส Unit (ในไฟล์ Unit.php) สำหรับแต่ละวิธีของคลาสดั้งเดิม กรณีทดสอบที่ยังไม่เสร็จจะถูกจัดเตรียมไว้ในคลาสกรณีทดสอบที่สร้างขึ้น (ดูส่วน "การทดสอบที่ยังไม่เสร็จ" ท้ายหนังสือเล่มนี้)
ตัวอย่างต่อไปนี้แสดงวิธีสร้างคลาสการทดสอบโครงกระดูกสำหรับคลาสที่ชื่อ Sample
phpunit --ตัวอย่างโครงกระดูก
PHPUnit 2.3.0 โดย Sebastian Bergmann
เขียนโครงกระดูกของคลาสทดสอบสำหรับตัวอย่างไปที่
SampleTest.php
phpunit ตัวอย่างการทดสอบ
PHPUnit 2.3.0 โดย Sebastian Bergmann
ฉัน
เวลา: 0.007268
มีกรณีทดสอบที่ไม่สมบูรณ์ 1 กรณี คือ
1) testSampleMethod (ตัวอย่างทดสอบ)
โอเค แต่เคสทดสอบไม่สมบูรณ์!!!
การทดสอบดำเนินการ: 1 กรณีทดสอบที่ไม่สมบูรณ์: 1.
เมื่อคุณเขียนการทดสอบสำหรับโค้ดที่มีอยู่ คุณจะต้องทำซ้ำโค้ดย่อยเดียวกันหลาย ๆ ตัว เช่น:
public function testSampleMethod( ) {}
PHPUnit สามารถช่วยคุณวิเคราะห์โค้ดที่มีอยู่และสร้าง A กรอบงานสำหรับคลาสกรณีทดสอบ
--wait
เมื่อสิ้นสุดการทดสอบแต่ละครั้ง ให้รอการกดแป้นพิมพ์ สิ่งนี้มีประโยชน์โดยเฉพาะอย่างยิ่งหากคุณกำลังรันการทดสอบในหน้าต่างที่รันเฉพาะการทดสอบอยู่ตลอดเวลา
เคล็ดลับ: เมื่อมีข้อผิดพลาดทางไวยากรณ์ PHP ในโค้ดที่กำลังทดสอบ การทดสอบอินเทอร์เฟซข้อความจะออกโดยตรงโดยไม่แสดงข้อความแสดงข้อผิดพลาดใดๆ ตัวโหลดชุดทดสอบมาตรฐานจะตรวจสอบไฟล์ต้นฉบับของชุดทดสอบเพื่อหาข้อผิดพลาดทางไวยากรณ์ PHP อย่างไรก็ตาม จะไม่ตรวจสอบไฟล์ต้นฉบับที่รวมอยู่ในชุดทดสอบเพื่อหาข้อผิดพลาดทางไวยากรณ์ PHPUnit เวอร์ชันในอนาคตจะแก้ไขปัญหานี้โดยใช้คลาสล่าม PHP แบบแซนด์บ็อกซ์