ไลบรารีนักแต่งเพลงที่มีคุณสมบัติเพิ่มเติมเพื่อปรับปรุงการทดสอบด้วย PHPUnit
ผู้แต่งต้องการ --dev eliashaeussler/phpunit-attributes
ไลบรารีนี้มาพร้อมกับส่วนขยาย PHPUnit ที่พร้อมใช้งาน จะต้องลงทะเบียนในไฟล์กำหนดค่า PHPUnit ของคุณ:
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ผู้ขาย/phpunit/phpunit/phpunit.xsd" bootstrap="ผู้ขาย/autoload.php" >+ <ส่วนขยาย>+ <bootstrap class="EliasHaeusslerPHPUnitAttributesPHPUnitAttributesExtension" />+ </ส่วนขยาย> <ชุดทดสอบ> <ชื่อชุดทดสอบ="หน่วย"> <ไดเร็กทอรี>การทดสอบ</ไดเร็กทอรี> </ชุดทดสอบ> </ชุดทดสอบ> <แหล่งที่มา> <รวม> <ไดเร็กทอรี>src</ไดเร็กทอรี> </รวม> </แหล่งที่มา> </phpunit>
คุณลักษณะบางอย่างสามารถกำหนดค่าได้ด้วยพารามิเตอร์ส่วนขยายที่กำหนดเอง จะต้องเพิ่มสิ่งเหล่านี้ในส่วนการลงทะเบียนส่วนขยายดังนี้:
<ส่วนขยาย>- <bootstrap class="EliasHaeusslerPHPUnitAttributesPHPUnitAttributesExtension" />+ <bootstrap class="EliasHaeusslerPHPUnitAttributesPHPUnitAttributesExtension">+ <parameter name="fancyParameterName" value="fancyParameterValue" />+ </bootstrap> </extensions>
แอ็ตทริบิวต์ต่อไปนี้มาพร้อมกับไลบรารีนี้:
#[RequiresClass]
#[RequiresPackage]
#[RequiresClass]
ขอบเขต: ระดับชั้นเรียนและวิธี
ด้วยคุณลักษณะนี้ การทดสอบหรือกรณีทดสอบสามารถทำเครื่องหมายว่าจะดำเนินการเฉพาะเมื่อมีคลาสบางคลาสเท่านั้น คลาสที่กำหนดจะต้องสามารถโหลดได้โดยตัวโหลดคลาสปัจจุบัน (ซึ่งโดยปกติจะเป็นคลาสโหลดเดอร์เริ่มต้นของ Composer)
ตามค่าเริ่มต้น กรณีทดสอบที่ต้องการคลาสที่ไม่มีอยู่จะถูกข้ามไป อย่างไรก็ตาม ลักษณะการทำงานนี้สามารถกำหนดค่าได้โดยใช้พารามิเตอร์ส่วนขยาย handleMissingClasses
หากตั้งค่าเป็น fail
กรณีทดสอบที่ไม่มีคลาสที่ขาดหายไปจะล้มเหลว (ค่าเริ่มต้นคือ skip
):
<ส่วนขยาย> <bootstrap class="EliasHaeusslerPHPUnitAttributesPHPUnitAttributesExtension"> <ชื่อพารามิเตอร์ =ค่า handleMissingClasses = "ล้มเหลว" /> </บูตสแตรป> </ส่วนขยาย>
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresClass(AnImportantClass::class)]ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ...} -
ระดับชั้นเรียน:
#[RequiresClass(AnImportantClass::class)]คลาสสุดท้าย DummyTest ขยาย TestCase {ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ข้ามหาก AnImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): ถือเป็นโมฆะ{// ข้ามหาก AnImportantClass หายไป} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresClass(AnImportantClass::class)]ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ข้ามไป ถ้า AnImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): เป็นโมฆะ{// ไม่ถูกข้าม} -
ระดับชั้นเรียน:
#[RequiresClass(AnImportantClass::class, 'การทดสอบนี้ต้องใช้คลาส 'AnImportantClass')] คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ข้ามหาก AnImportantClass หายไป พร้อมด้วยข้อความที่กำหนดเอง} public function testOtherDummyAction(): void{// ข้ามหาก AnImportantClass หายไป พร้อมด้วยข้อความที่กำหนดเอง} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresClass(AnImportantClass::class, 'การทดสอบนี้ต้องใช้คลาส `AnImportantClass`')] ฟังก์ชันสาธารณะ testDummyAction(): ถือเป็นโมฆะ{// ข้ามไปหาก AnImportantClass หายไป พร้อมด้วยข้อความที่กำหนดเอง}ฟังก์ชันสาธารณะ testOtherDummyAction(): เป็นโมฆะ{// ไม่ถูกข้าม} -
ระดับชั้นเรียน:
#[RequiresClass(AnImportantClass::class, resultBehavior: OutcomeBehavior::Fail)] คลาสสุดท้าย DummyTest ขยาย TestCase {ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ล้มเหลวหาก AnImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): ถือเป็นโมฆะ{// ล้มเหลวหาก AnImportantClass หายไป} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresClass(AnImportantClass::class, resultBehavior: OutcomeBehavior::Fail)]ฟังก์ชันสาธารณะ testDummyAction(): void{// ล้มเหลวหาก AnImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): void{// ไม่ล้มเหลว} -
ระดับชั้นเรียน:
#[RequiresClass(AnImportantClass::class)] #[RequiresClass(AnotherVeryImportantClass::class)]คลาสสุดท้าย DummyTest ขยาย TestCase {ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ข้ามหาก AnImportantClass และ/หรือ AnotherVeryImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): ถือเป็นโมฆะ{// ข้ามหาก AnImportantClass และ/หรือ AnotherVeryImportantClass หายไป} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresClass(AnImportantClass::class)] #[RequiresClass(AnotherVeryImportantClass::class)]ฟังก์ชันสาธารณะ testDummyAction(): เป็นโมฆะ{// ข้ามไป ถ้า AnImportantClass และ/หรือ AnotherVeryImportantClass หายไป}ฟังก์ชันสาธารณะ testOtherDummyAction(): void{// ไม่ถูกข้าม} -
#[RequiresPackage]
ขอบเขต: ระดับชั้นเรียนและวิธี
แอ็ตทริบิวต์นี้สามารถใช้เพื่อกำหนดข้อกำหนดแพ็คเกจเฉพาะสำหรับการทดสอบเดี่ยวและคลาสการทดสอบที่สมบูรณ์ คาดว่าจะติดตั้งแพ็คเกจที่จำเป็นผ่าน Composer คุณสามารถเลือกกำหนดข้อจำกัดเวอร์ชันและข้อความที่กำหนดเองได้
สำคัญ
แอ็ตทริบิวต์กำหนดแพ็กเกจ Composer ที่ติดตั้งจากคลาส InstalledVersions
ที่สร้างตามเวลาบิลด์ที่สร้างโดย Composer เพื่อให้อ่านจากคลาสนี้ได้อย่างถูกต้อง จำเป็นต้องรวมตัวโหลดอัตโนมัติที่สร้างโดย Composer ไว้ในสคริปต์บูตสแตรป PHPUnit ของคุณ:
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php"><! -- ... --></phpunit>
คุณยังสามารถส่งสคริปต์เป็นตัวเลือกคำสั่ง: phpunit --bootstrap vendor/autoload.php
ตามค่าเริ่มต้น กรณีทดสอบที่มีข้อกำหนดที่ไม่เป็นที่พอใจจะถูกข้ามไป อย่างไรก็ตาม ลักษณะการทำงานนี้สามารถกำหนดค่าได้โดยใช้พารามิเตอร์ส่วนขยาย handleUnsatisfiedPackageRequirements
หากตั้งค่าให้ fail
กรณีทดสอบที่มีข้อกำหนดที่ไม่พอใจจะล้มเหลว (ค่าเริ่มต้นคือ skip
):
<ส่วนขยาย> <bootstrap class="EliasHaeusslerPHPUnitAttributesPHPUnitAttributesExtension"> <ชื่อพารามิเตอร์ =ค่า "handleUnsatisfiedPackageRequirements" = "ล้มเหลว" /> </บูตสแตรป> </ส่วนขยาย>
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console')]ฟังก์ชั่นสาธารณะ testDummyAction(): เป็นโมฆะ{// ...} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/console')]DummyTest คลาสสุดท้ายขยาย TestCase {public function testDummyAction(): void{// ข้ามหากไม่ได้ติดตั้ง symfony/console} public function testOtherDummyAction(): void{// ข้ามหากไม่ได้ติดตั้ง symfony/console} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console')]public function testDummyAction(): void{// ข้ามไป ถ้าไม่ได้ติดตั้ง symfony/console.}public function testOtherDummyAction(): void{// ไม่ถูกข้าม} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/*')]คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ข้ามไปหากไม่มีการติดตั้งแพ็คเกจ symfony/*} public function testOtherDummyAction(): void{// ข้ามไปหากไม่มีการติดตั้งแพ็คเกจ symfony/*} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/*')]public function testDummyAction(): void{// ข้ามไปหากไม่มีการติดตั้งแพ็คเกจ symfony/*}public function testOtherDummyAction(): void{// ไม่ถูกข้าม} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/console', '>= 7')]คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ข้ามหากเวอร์ชันที่ติดตั้งของ symfony/console คือ < 7.}public function testOtherDummyAction(): void{// ข้ามหากเวอร์ชันที่ติดตั้งของ symfony/console คือ < 7.} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console', '>= 7')]public function testDummyAction(): void{// ข้ามไปหากเวอร์ชันที่ติดตั้งของ symfony/console < 7.}public function testOtherDummyAction(): void{// ไม่ข้าม} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/console', ข้อความ: 'การทดสอบนี้ต้องใช้ Symfony Console')] คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ข้ามหากไม่ได้ติดตั้ง Symfony/console พร้อมด้วยข้อความที่กำหนดเอง}public function testOtherDummyAction(): void{// ข้ามหากไม่ได้ติดตั้ง Symfony/console พร้อมด้วยข้อความที่กำหนดเอง } -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console', message: 'This test need the Symfony Console.')]public function testDummyAction(): void{// ข้ามไปหากไม่ได้ติดตั้ง Symfony/console พร้อมด้วยข้อความที่กำหนดเอง}public function testOtherDummyAction(): เป็นโมฆะ{// ไม่ถูกข้าม} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/console', resultBehavior: OutcomeBehavior::Fail)] คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ล้มเหลวหากไม่ได้ติดตั้ง symfony/console} public function testOtherDummyAction(): void{// ล้มเหลวหากไม่ได้ติดตั้ง symfony/console} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console', resultBehavior: OutcomeBehavior::Fail)]public function testDummyAction(): void{// ล้มเหลวหากไม่ได้ติดตั้ง symfony/console.}public function testOtherDummyAction(): void{// ไม่ ล้มเหลว.} -
ระดับชั้นเรียน:
#[RequiresPackage('symfony/console')] #[RequiresPackage('guzzlehttp/guzzle')]คลาสสุดท้าย DummyTest ขยาย TestCase {public function testDummyAction(): void{// ข้ามไป หากไม่ได้ติดตั้ง symfony/console และ/หรือ guzzlehttp/guzzle } public function testOtherDummyAction(): void{// ข้ามไป หากไม่ได้ติดตั้ง symfony/console และ/หรือ guzzlehttp/guzzle ติดตั้งแล้ว} -
ระดับวิธีการ:
DummyTest คลาสสุดท้ายขยาย TestCase - #[RequiresPackage('symfony/console')] #[RequiresPackage('guzzlehttp/guzzle')]public function testDummyAction(): void{// ข้ามไป หากไม่ได้ติดตั้ง symfony/console และ/หรือ guzzlehttp/guzzle.}public function testOtherDummyAction(): void{// ไม่ถูกข้าม } -
โปรดดูที่ CONTRIBUTING.md
โครงการนี้ได้รับอนุญาตภายใต้ GNU General Public License 3.0 (หรือใหม่กว่า)