PHPUnit হল PHP ভাষায় লিখিত কোডের জন্য একটি জনপ্রিয় ইউনিট টেস্টিং ফ্রেমওয়ার্ক। Zend Framework (এখন Laminas) এর অ্যাপ্লিকেশন উন্নয়ন এবং তার কোডের কার্যকারিতা নিশ্চিত করতে PHPUnit ব্যবহার করা হয়। ইউনিট টেস্টিং আপনাকে আপনার কোডের ছোট ছোট অংশ (যেমন মেথড, ক্লাস) পরীক্ষা করতে এবং নিশ্চিত করতে সাহায্য করে যে তারা ঠিকভাবে কাজ করছে।
Zend Framework এ PHPUnit ব্যবহার করে ইউনিট টেস্টিং করার জন্য কিছু প্রাথমিক ধাপ এবং কনফিগারেশন জানতে হবে, যা আমরা এই অংশে দেখব।
PHPUnit কনফিগারেশন
Zend Framework অ্যাপ্লিকেশনে PHPUnit ব্যবহার করার জন্য প্রথমে কিছু নির্দিষ্ট কনফিগারেশন করতে হয়। এজন্য phpunit.xml কনফিগারেশন ফাইলটি তৈরি করতে হয়, যেখানে টেস্ট চলানোর জন্য প্রয়োজনীয় সেটিংস থাকবে।
PHPUnit ইন্সটলেশন
Composer ব্যবহার করে PHPUnit ইন্সটল করা
Zend Framework এ PHPUnit ইন্সটল করতে Composer ব্যবহার করা হয়। Composer এ PHPUnit প্যাকেজটি ইন্সটল করার জন্য নিচের কমান্ডটি ব্যবহার করুন:
composer require --dev phpunit/phpunitএর মাধ্যমে PHPUnit আপনার প্রকল্পে ডেভেলপমেন্ট ডিপেন্ডেন্সি হিসেবে ইনস্টল হয়ে যাবে।
phpunit.xmlফাইল তৈরি করাPHPUnit এর কনফিগারেশন ফাইল
phpunit.xmlতৈরি করতে হবে, যাতে টেস্টের বিভিন্ন সেটিংস এবং টেস্ট ফোল্ডারের পথ নির্দিষ্ট করা হয়।উদাহরণ
phpunit.xml:<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php"> <testsuites> <testsuite name="Application Test Suite"> <directory>./module/Application/test</directory> </testsuite> </testsuites> <listeners> <listener class="PHPUnit_Util_Log_JUnit" file="vendor/phpunit/phpunit/src/Util/Log/JUnit.php" /> </listeners> </phpunit>এখানে:
bootstrap="vendor/autoload.php": PHPUnit শুরু হওয়ার সময় Composer এর অটোলোডার লোড হয়।<directory>./module/Application/test</directory>: আপনার টেস্ট ফাইলগুলো যেখানে রয়েছে সেই ফোল্ডারের পাথ।
ইউনিট টেস্টিং এর প্রাথমিক ধারণা
ইউনিট টেস্টিং হল একটি পদ্ধতি যেখানে কোডের ছোট ছোট ইউনিট (যেমন ক্লাস, ফাংশন, মেথড) একে একে পরীক্ষা করা হয়। ইউনিট টেস্টিং এর মাধ্যমে কোডের কার্যকারিতা পরীক্ষা করে নিশ্চিত হওয়া যায় যে কোন পরিবর্তনের পর আগের কোডের কোনো অংশ ঠিকভাবে কাজ করছে।
PHPUnit ব্যবহার করে একটি সিম্পল টেস্ট তৈরি করা
Zend Framework এ PHPUnit ব্যবহার করে একটি সিম্পল টেস্ট কিভাবে তৈরি করবেন, তা দেখার জন্য নিচে একটি উদাহরণ দেওয়া হলো।
Test Class তৈরি করা
প্রথমে আপনার অ্যাপ্লিকেশনের
module/Application/testফোল্ডারে একটি টেস্ট ক্লাস তৈরি করুন। উদাহরণস্বরূপ, আমরাCalculatorক্লাসের জন্য একটি ইউনিট টেস্ট তৈরি করব।Calculator.php (অ্যাপ্লিকেশন কোড):
<?php namespace Application\Service; class Calculator { public function add($a, $b) { return $a + $b; } public function subtract($a, $b) { return $a - $b; } }Test Class (CalculatorTest.php)
এখন, আমরা
Calculatorক্লাসের জন্য PHPUnit টেস্ট তৈরি করব। এটিmodule/Application/test/Serviceফোল্ডারে তৈরি করা হবে।CalculatorTest.php:
<?php namespace ApplicationTest\Service; use PHPUnit\Framework\TestCase; use Application\Service\Calculator; class CalculatorTest extends TestCase { protected $calculator; protected function setUp(): void { // টেস্ট শুরু হওয়ার আগে Calculator অবজেক্ট তৈরি করা $this->calculator = new Calculator(); } public function testAdd() { $this->assertEquals(4, $this->calculator->add(2, 2)); $this->assertEquals(0, $this->calculator->add(2, -2)); } public function testSubtract() { $this->assertEquals(0, $this->calculator->subtract(2, 2)); $this->assertEquals(4, $this->calculator->subtract(2, -2)); } }এখানে:
setUp()মেথডটি প্রতিটি টেস্টের আগে কল করা হয়। এটি টেস্টের জন্য প্রাথমিক কনফিগারেশন প্রস্তুত করে।testAdd()এবংtestSubtract()মেথডগুলো হল টেস্ট কেস যেখানেadd()এবংsubtract()মেথডের কার্যকারিতা পরীক্ষা করা হয়।assertEquals()ব্যবহার করা হয়েছে আউটপুট এবং প্রত্যাশিত মান তুলনা করার জন্য।
টেস্ট রান করা
PHPUnit টেস্ট রান করার জন্য আপনার টার্মিনাল থেকে নিচের কমান্ডটি চালাতে হবে:
./vendor/bin/phpunit --configuration phpunit.xml
এটি আপনার phpunit.xml কনফিগারেশন ফাইল অনুযায়ী টেস্ট রান করবে এবং টেস্টের ফলাফল কনসোলে দেখাবে।
টেস্ট রিপোর্ট
PHPUnit টেস্ট রান করার পরে, আপনি টেস্ট রিপোর্ট দেখতে পাবেন। রিপোর্টের মধ্যে প্রতিটি টেস্টের স্ট্যাটাস (পাস, ফেইল, বা স্কিপ) এবং ত্রুটির বিবরণ (যদি থাকে) থাকবে।
PHPUnit ব্যবহার করে মক অবজেক্ট
এছাড়া, PHPUnit এ Mock Objects তৈরি করা যায়, যা নির্দিষ্ট ক্লাস বা মেথডের ফাংশনালিটি সরবরাহ না করে শুধুমাত্র তাদের আচরণ নকল করে। এটি বিশেষত ডিপেন্ডেন্সি ইনজেকশন বা এক্সটার্নাল সিস্টেমের সাথে যোগাযোগকারী কোড টেস্ট করার জন্য উপকারী।
Mock Object তৈরি করা:
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\MockObject\MockObject;
class CalculatorTest extends TestCase
{
public function testMocking()
{
$mock = $this->createMock(SomeClass::class);
$mock->method('someMethod')->willReturn('mocked value');
$this->assertEquals('mocked value', $mock->someMethod());
}
}
এখানে createMock() মেথড ব্যবহার করে SomeClass এর মক অবজেক্ট তৈরি করা হয়েছে, এবং someMethod() কে একটি নির্দিষ্ট মান রিটার্ন করতে বলা হয়েছে।
PHPUnit টেস্টিং এর সুবিধা
- কোডের বিশ্বাসযোগ্যতা: ইউনিট টেস্টিং কোডের প্রতিটি অংশ পরীক্ষা করে, যার মাধ্যমে আপনি নিশ্চিত হতে পারেন কোডটি প্রত্যাশিতভাবে কাজ করছে।
- ডিবাগিং সহজ: টেস্টের মাধ্যমে দ্রুত কোনো ত্রুটি বা ভুল খুঁজে বের করা যায়।
- কোড পরিবর্তনের নিরাপত্তা: যখন কোডে কোনো পরিবর্তন করা হয়, তখন টেস্ট চালিয়ে দেখা যায় আগের ফিচারগুলো ঠিকমত কাজ করছে কিনা।
সারাংশ
Zend Framework এ PHPUnit ব্যবহার করে ইউনিট টেস্টিং কোডের কার্যকারিতা নিশ্চিত করার জন্য একটি গুরুত্বপূর্ণ পদ্ধতি। আপনি phpunit.xml কনফিগারেশন ফাইল ব্যবহার করে টেস্ট পরিবেশ সেটআপ করতে পারেন, এবং TestCase ক্লাসের মাধ্যমে কোডের কার্যকারিতা পরীক্ষা করতে পারেন। PHPUnit এর মাধ্যমে আপনি মক অবজেক্টও ব্যবহার করতে পারেন, যা ডিপেন্ডেন্ট কোডের কার্যকারিতা নিশ্চিত করতে সাহায্য করে।
Read more