আমি এই পিএইচপি ত্রুটি কেন পাচ্ছি?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
আমি এই পিএইচপি ত্রুটি কেন পাচ্ছি?
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
উত্তর:
PHPUnit ডকুমেন্টেশন বলে অন্তর্ভুক্ত করা / প্রয়োজন PHPUnit / Framework.php বলতেন, যেমন নিম্নরূপ:
require_once ('PHPUnit/Framework/TestCase.php');
হালনাগাদ
পিএইচপিউইনিত ৩.৫ অনুসারে, একটি বিল্ট-ইন অটোল্যাডার শ্রেণি রয়েছে যা এটি আপনার জন্য পরিচালনা করবে:
require_once 'PHPUnit/Autoload.php';
এটি নির্দেশ করার জন্য ফিনিক্সকে ধন্যবাদ!
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
এবং PHPUnit/Framework/TestCase.php
, আমার ফোল্ডারটি PHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
আপডেট phpunit পর এখানে আসার তাদের জন্য সংস্করণ 6 বা তার অধিক 2017-02-03 মুক্তি (যেমন সুরকার সঙ্গে), আপনি এই ত্রুটি কারণ phpunit কোড এখন namespaced হয় (চেক পেয়ে যেতে পারে পরিবর্তণের )।
আপনার পছন্দ মতো জিনিসগুলি রিফ্যাক্টর \PHPUnit_Framework_TestCase
করতে হবে\PHPUnit\Framework\TestCase
জন্য উচ্চ সংস্করণের যেমন phpunit এর 6.4 আপনি নামস্থান ব্যবহার করা আবশ্যক PHPUnit \ ফ্রেমওয়ার্ক \ TestCase
ব্যবহারের TestCase পরিবর্তে PHPUnit_Framework_TestCase
// use the following namespace
use PHPUnit\Framework\TestCase;
// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {
}
আপনি এই ত্রুটিটি পেতে পারেন কারণ আপনি ফাইলটির নাম স্পেস করেছেন। যদি তাই হয় তবে আপনাকে পিএইচপিউইনিট_ফ্রেমওয়ার্ক_স্টেস কেসটি ব্যাকস্ল্যাশ সহ পূর্ববর্তী করে গ্লোবাল নেমস্পেসে উল্লেখ করতে হবে:
namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}
ডকুমেন্টেশন সংশোধন করার জন্য কথোপকথন শুরু করতে আমি একটি অপরিশোধিত পিআর জমা দিয়েছি ।
class YourNiceTest extends PHPUnit_Framework_TestCase
এটি করেছেন : কেবল বর্ধিত শ্রেণীর সামনে \ যুক্ত করুন class YourNiceTest extends \PHPUnit_Framework_TestCase
- এটি আমার জন্য কাজ করেছে, স্থানীয় সংস্থার হিসাবে ডাউনলোড করা সুরকার ফাইলটিতে এটি ব্যবহার করে Symfony 2.8
এবং এতে অন্তর্ভুক্ত phpunit
করেছেন"phpunit/phpunit": "^4.8"
আমি পিএইচপি 5 এ পিএইচপিউইনিট পরীক্ষা চালিয়ে যাচ্ছিলাম এবং তারপরে আমারও পিএইচপি 7 সমর্থন করা দরকার। এটি আমিই করেছি:
সুরকারে
"phpunit/phpunit": "~4.8|~5.7"
আমার পিএইচপিউনিট বুটস্ট্র্যাপ ফাইলটিতে (আমার ক্ষেত্রে, /tests/bootstrap.php
):
// PHPUnit 6 introduced a breaking change that
// removed PHPUnit_Framework_TestCase as a base class,
// and replaced it with \PHPUnit\Framework\TestCase
if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase');
অন্য কথায়, এটি পিএইচপিউইনিট 4 বা 5 এর জন্য মূলত পরীক্ষিত পরীক্ষাগুলির জন্য কাজ করবে তবে তারপরে পিএইচপিউইনিত 6 এও কাজ করা দরকার।
কমান্ডগুলি চালানোর জন্য আপনি কেবল পিএইচপিউইনটি ইনস্টল করতে পারেন ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
একক পরীক্ষা চালান
এবং তারপরে পিএইচপুনিট পরীক্ষা চালান:
phpunit test.php
পরীক্ষা ফাইলের বিষয়বস্তু নিম্নলিখিত:
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
protected function setUp()
{
}
public function testSave()
{
}
}
পরীক্ষার স্যুট চালান
পরীক্ষার স্যুটটির কনফিগারেশন: demosuite.xML। demo
ডিরেক্টরিতে সমস্ত পরীক্ষা রয়েছে। পরীক্ষার ফাইলগুলির নাম অবশ্যই *_test.php
( suffix
) হিসাবে রাখা উচিত ।
<testsuites>
<testsuite name="DemoTestSuite">
<directory suffix="test.php">demo</directory>
</testsuite>
</testsuites>
টেস্ট স্যুট নিম্নলিখিত কমান্ডগুলি দিয়ে চলছে:
phpunit -c demosuite.xml --testsuite DemoTestSuite
PHPUnit_Framework_TestCase
। আপনাকে সত্যিই ব্যবহার করতে হবে... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
এবং তারপরেই করতে হয়েছিল sudo chmod +x /usr/local/bin/phpunit
। ফাইলটি সরানোর আগে এক্সিকিউটেবল হিসাবে সেট করা কখনও ভ্যাগ্র্যান্ট উবুন্টুতে কাজ করেনি। ধারণা নেই কেন ... তবে যদি কেউ এর সাথে লড়াই করে যাচ্ছেন তবে আমি আশা করি এটি সাহায্য করবে।
আমি জেডএফ 2 ব্যবহার করি এবং 'পিএইচপিউনিট_ ফ্রেমওয়ার্ক_স্টেসকেস' কে '\ পিএইচপিউনিট \ ফ্রেমওয়ার্ক \ টেস্টকেস'-এ প্রতিস্থাপন করার পরে আমার জন্য কাজ করি
যদি আপনার সেন্টোস বা অন্যান্য লিনাক্স বিতরণ থাকে তবে আপনাকে phpunit প্যাকেজ ইনস্টল করতে হবে, আমি এটি yum ইনস্টল phpunit দিয়ে করেছি এবং এটি কাজ করে। হতে পারে আপনাকে কোনও সংগ্রহস্থল যুক্ত করতে পারেন, তবে আমি মনে করি এটি ডিফল্টের সাথে মসৃণভাবে কাজ করতে হবে (আমার CentOS 7 আছে)
এটি ভালভাবে হতে পারে যে আপনি ওয়ার্ডপ্রেস মূল পরীক্ষাগুলি চালিয়ে যাচ্ছেন এবং সম্প্রতি আপনার পিএইচপিউনিটটি version সংস্করণে আপগ্রেড করেছেন that's যদি এটি হয় তবে পিএইচপিউনিটিতে নাম স্পেসিংয়ের সাম্প্রতিক পরিবর্তনটি আপনার কোডটি ভেঙে ফেলবে।
ভাগ্যক্রমে, https://core.trac.wordpress.org/changeset/40547 এ মূল পরীক্ষাগুলির একটি প্যাচ রয়েছে যা সমস্যার আশপাশে কাজ করবে। এটিতে ট্র্যাভিস.আইএমএল-এর পরিবর্তনগুলিও অন্তর্ভুক্ত রয়েছে যা আপনার সেটআপে নাও থাকতে পারে; যদি তা হয় তবে ট্র্যাভিস প্যাচ উপেক্ষা করার জন্য আপনাকে .diff ফাইলটি সম্পাদনা করতে হবে।
প্যাচের ট্র্যাভিস অংশটি সরানোর জন্য প্যাচ ফাইলটি সম্পাদনা করুন যদি আপনার এটির প্রয়োজন না হয়। এই লাইনের ঠিক উপরে ফাইলের শীর্ষ থেকে মুছুন:
Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
আপনার / অন্তর্ভুক্ত / ডিরেক্টরিতে উপরে ডিরেক্টরিতে ভিন্নতা সংরক্ষণ করুন - আমার ক্ষেত্রে এটি নিজেই ওয়ার্ডপ্রেস ডিরেক্টরি ছিল
ফাইলগুলি প্যাচ করতে ইউনিক্স প্যাচ সরঞ্জামটি ব্যবহার করুন। পরম থেকে আপেক্ষিক ডিরেক্টরি কাঠামোতে যেতে আপনাকে প্রথম কয়েকটি স্ল্যাশও ফেলা করতে হবে। আপনি উপরের পয়েন্ট 3 থেকে দেখতে পাচ্ছেন, অন্তর্ভুক্ত ডিরেক্টরিটির আগে পাঁচটি স্ল্যাশ রয়েছে যা একটি -p5 পতাকা আপনার জন্য মুক্তি পাবে।
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
আমি এটি করার পরে আমার পরীক্ষাগুলি আবার সঠিকভাবে চলেছিল।
বিজ্ঞপ্তি: কমান্ডটি php bin/console generate:doctrine:crud
এতে তৈরি TestController
করে src/Tests
যাতে এটি না থাকলে সার্ভার শুরু করার চেষ্টা করার সময় এটি ত্রুটি ফেলে দিতে পারে UnitTests
। ফাইলটি সরিয়ে ফেলুন!
আমি যুক্ত করার জন্য উইন্ডোজ 10 তে জেন্ডার 1.12 সংস্করণ সহ পিএইচপি 5.6 ব্যবহার করছি
প্রয়োজনীয়_অনস 'পিএইচপিউনিট / অটোল্যাড.এফপি';
আগে
অ্যাবস্ট্রাক্ট শ্রেণি জেন্ডেস্টেস্ট_এইচপি ইউনিট_কন্ট্রোলার টেস্টকেস PHPUnit_Framework_TestCase প্রসারিত
কাজ করছে. আমাদের উপরোক্ত বিবৃতিটি কন্ট্রোলটার টেস্টকেস.এফপি ফাইলটিতে যুক্ত করতে হবে