কেন, মারাত্মক ত্রুটি: শ্রেণি 'পিএইচপিউনিট_ফ্রেমওয়ার্ক_স্টেসকেস' পাওয়া যায়নি…?


127

আমি এই পিএইচপি ত্রুটি কেন পাচ্ছি?

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...

9
আপনি কোনও তথ্য সরবরাহ করছেন না।
পেক্কা

Phpunit কমান্ড-লাইনের মাধ্যমে আপনার পরীক্ষা চালান। এটি প্রয়োজনীয় ক্লাসগুলি লোড করে।
হাফস্টপ

আপনার কোডটি পিএইচপিউনিট 6 এর সাথে পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্য রাখতে আপনি নীচের উত্তরটি stackoverflow.com/questions/42811164/… থেকে উত্তর ব্যবহার করতে পারেন ।
রবসন

উত্তর:


73

PHPUnit ডকুমেন্টেশন বলে অন্তর্ভুক্ত করা / প্রয়োজন PHPUnit / Framework.php বলতেন, যেমন নিম্নরূপ:

require_once ('PHPUnit/Framework/TestCase.php');

হালনাগাদ

পিএইচপিউইনিত ৩.৫ অনুসারে, একটি বিল্ট-ইন অটোল্যাডার শ্রেণি রয়েছে যা এটি আপনার জন্য পরিচালনা করবে:

require_once 'PHPUnit/Autoload.php';

এটি নির্দেশ করার জন্য ফিনিক্সকে ধন্যবাদ!


14
পিএইচপিউনিট ৩.৫ এর নিজস্ব অটোলোডার রয়েছে যা জিনিসগুলি সহজ রাখতে সহায়তা করতে পারে: require_once 'PHPUnit/Autoload.php'

1
আমি সম্মত হই যে প্রয়োজনীয়_অনস ('পিএইচপিউনিট / অটোলোয়াড.এফপি') সেরা অনুশীলন।
পল গৃহপরিচয়

1
আমার উভয় নেই PHPUnit/Autoload.phpএবং PHPUnit/Framework/TestCase.php, আমার ফোল্ডারটি PHPUnit/Framework/MockObject
একধরণের

4
এবং এখন আমার আছে PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
ডেনিস


237

আপডেট phpunit পর এখানে আসার তাদের জন্য সংস্করণ 6 বা তার অধিক 2017-02-03 মুক্তি (যেমন সুরকার সঙ্গে), আপনি এই ত্রুটি কারণ phpunit কোড এখন namespaced হয় (চেক পেয়ে যেতে পারে পরিবর্তণের )।

আপনার পছন্দ মতো জিনিসগুলি রিফ্যাক্টর \PHPUnit_Framework_TestCaseকরতে হবে\PHPUnit\Framework\TestCase


4
ধন্যবাদ, ট্র্যাভিস সিআই তাদের পিএইচপি 7 বিল্ডগুলিতে অতি সাম্প্রতিক পিএইচপিউনিট সংস্করণটি ব্যবহার করার কারণে আমার এই সমস্যা হয়েছিল। আমার ফিক্সটি হ'ল ম্যানুয়ালি কোনও পুরানো ফার ডাউনলোড করা এবং তার পরিবর্তে এটি ব্যবহার করা।
অসন্তুষ্ট

2
github.com/sebastianbergmann/phpunit/wiki/… এটি রিলিজ নোটগুলির শীর্ষে রয়েছে, তবুও আমি এটি মিস করেছি
Qchmqs

ভাল ধন্যবাদ স্যার, ধন্যবাদ। আমি প্রকৃতপক্ষে সংস্করণ 6.-এ আপগ্রেড করার পরে এখানে পৌঁছে যাচ্ছি
h4ckNinja

আমি সত্যিই বিরক্ত হচ্ছিলাম যে আমার পরীক্ষাগুলি হঠাৎ কাজ করা বন্ধ করে দিয়েছে। আমি একটি সুরকার আপডেট করেছি এবং এটি আমার পিএইচপুনিটকে 6.1 এ আপডেট করেছে। ধন্যবাদ.
জেড লিঞ্চ 18

38

জন্য উচ্চ সংস্করণের যেমন 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 {

}

আমি পুরানো টিউটোরিয়ালটি অনুসরণ করছিলাম বলে এটি দুর্দান্ত কাজ করেছে

আপনি কেবল শাদির উত্তর অনুলিপি করেছেন
আদম

@ আদম কে শাদি?
জিজেশ চেরাই

আমি এ জাতীয় জিনিস জানি না। আমি একই ত্রুটি পেয়েছি তখন আমি প্যাকেজটি ক্র্যাক করে উত্তরটি অন্বেষণ করেছি
জিজেশ চেরাই

13

আপনি এই ত্রুটিটি পেতে পারেন কারণ আপনি ফাইলটির নাম স্পেস করেছেন। যদি তাই হয় তবে আপনাকে পিএইচপিউইনিট_ফ্রেমওয়ার্ক_স্টেস কেসটি ব্যাকস্ল্যাশ সহ পূর্ববর্তী করে গ্লোবাল নেমস্পেসে উল্লেখ করতে হবে:

namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}

ডকুমেন্টেশন সংশোধন করার জন্য কথোপকথন শুরু করতে আমি একটি অপরিশোধিত পিআর জমা দিয়েছি ।


1
হ্যাঁ, আপনি যদি class YourNiceTest extends PHPUnit_Framework_TestCaseএটি করেছেন : কেবল বর্ধিত শ্রেণীর সামনে \ যুক্ত করুন class YourNiceTest extends \PHPUnit_Framework_TestCase- এটি আমার জন্য কাজ করেছে, স্থানীয় সংস্থার হিসাবে ডাউনলোড করা সুরকার ফাইলটিতে এটি ব্যবহার করে Symfony 2.8এবং এতে অন্তর্ভুক্ত phpunitকরেছেন"phpunit/phpunit": "^4.8"
জাভি মন্টেরো

12

আমি পিএইচপি 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 এও কাজ করা দরকার।


1
এই সমাধানটি যদি আপনি সিভি \ টেস্ট কোডটি স্পর্শ করতে না চান তবে সর্বশেষ নেমস্পেস ভিত্তিক পিএইচপি ইউনিট পরীক্ষার সাথে সামঞ্জস্যপূর্ণ হতে চান
শাহাদাত হোসেন খান

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

3
এটি আর কাজ করে না কারণ পিএইচপিউনেটস লেটসেটগুলি আর পুরানো শ্রেণীর নাম যেমন সমর্থন করে না PHPUnit_Framework_TestCase। আপনাকে সত্যিই ব্যবহার করতে হবে... extends PHPUnit\Framework\TestCase
মিক্কো রেন্টালাইনেন

শুধু বলছিলাম যে আমাকে প্রথমে mv phpunit /usr/local/bin/phpunitএবং তারপরেই করতে হয়েছিল sudo chmod +x /usr/local/bin/phpunit। ফাইলটি সরানোর আগে এক্সিকিউটেবল হিসাবে সেট করা কখনও ভ্যাগ্র্যান্ট উবুন্টুতে কাজ করেনি। ধারণা নেই কেন ... তবে যদি কেউ এর সাথে লড়াই করে যাচ্ছেন তবে আমি আশা করি এটি সাহায্য করবে।
জর্জ মেলোনাস

4

ধৃষ্টতা:

Phpunit (3.7) কনসোল পরিবেশে উপলব্ধ।

কর্ম:

কনসোলে নিম্নলিখিত কমান্ডটি প্রবেশ করান:

SHELL> phpunit "{{PATH TO THE FILE}}"

মন্তব্যসমূহ:

আপনি কনসোলে চালাতে না চাইলে পিএইচপিউইনাইটের নতুন সংস্করণগুলিতে আপনাকে কিছু অন্তর্ভুক্ত করার দরকার নেই। উদাহরণস্বরূপ, ব্রাউজারে পরীক্ষা চলছে।


1

আমি জেডএফ 2 ব্যবহার করি এবং 'পিএইচপিউনিট_ ফ্রেমওয়ার্ক_স্টেসকেস' কে '\ পিএইচপিউনিট \ ফ্রেমওয়ার্ক \ টেস্টকেস'-এ প্রতিস্থাপন করার পরে আমার জন্য কাজ করি


0

যদি আপনার সেন্টোস বা অন্যান্য লিনাক্স বিতরণ থাকে তবে আপনাকে phpunit প্যাকেজ ইনস্টল করতে হবে, আমি এটি yum ইনস্টল phpunit দিয়ে করেছি এবং এটি কাজ করে। হতে পারে আপনাকে কোনও সংগ্রহস্থল যুক্ত করতে পারেন, তবে আমি মনে করি এটি ডিফল্টের সাথে মসৃণভাবে কাজ করতে হবে (আমার CentOS 7 আছে)


0

এটি ভালভাবে হতে পারে যে আপনি ওয়ার্ডপ্রেস মূল পরীক্ষাগুলি চালিয়ে যাচ্ছেন এবং সম্প্রতি আপনার পিএইচপিউনিটটি version সংস্করণে আপগ্রেড করেছেন that's যদি এটি হয় তবে পিএইচপিউনিটিতে নাম স্পেসিংয়ের সাম্প্রতিক পরিবর্তনটি আপনার কোডটি ভেঙে ফেলবে।

ভাগ্যক্রমে, https://core.trac.wordpress.org/changeset/40547 এ মূল পরীক্ষাগুলির একটি প্যাচ রয়েছে যা সমস্যার আশপাশে কাজ করবে। এটিতে ট্র্যাভিস.আইএমএল-এর পরিবর্তনগুলিও অন্তর্ভুক্ত রয়েছে যা আপনার সেটআপে নাও থাকতে পারে; যদি তা হয় তবে ট্র্যাভিস প্যাচ উপেক্ষা করার জন্য আপনাকে .diff ফাইলটি সম্পাদনা করতে হবে।

  1. Https://core.trac.wordpress.org/changeset/40547 এর নীচ থেকে "ইউনিফাইড ডিফ" প্যাচ ডাউনলোড করুন
  2. প্যাচের ট্র্যাভিস অংশটি সরানোর জন্য প্যাচ ফাইলটি সম্পাদনা করুন যদি আপনার এটির প্রয়োজন না হয়। এই লাইনের ঠিক উপরে ফাইলের শীর্ষ থেকে মুছুন:

    Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
  3. আপনার / অন্তর্ভুক্ত / ডিরেক্টরিতে উপরে ডিরেক্টরিতে ভিন্নতা সংরক্ষণ করুন - আমার ক্ষেত্রে এটি নিজেই ওয়ার্ডপ্রেস ডিরেক্টরি ছিল

  4. ফাইলগুলি প্যাচ করতে ইউনিক্স প্যাচ সরঞ্জামটি ব্যবহার করুন। পরম থেকে আপেক্ষিক ডিরেক্টরি কাঠামোতে যেতে আপনাকে প্রথম কয়েকটি স্ল্যাশও ফেলা করতে হবে। আপনি উপরের পয়েন্ট 3 থেকে দেখতে পাচ্ছেন, অন্তর্ভুক্ত ডিরেক্টরিটির আগে পাঁচটি স্ল্যাশ রয়েছে যা একটি -p5 পতাকা আপনার জন্য মুক্তি পাবে।

    $ cd [WORDPRESS DIRECTORY]
    $ patch -p5 < changeset_40547.diff 

আমি এটি করার পরে আমার পরীক্ষাগুলি আবার সঠিকভাবে চলেছিল।


0

বিজ্ঞপ্তি: কমান্ডটি php bin/console generate:doctrine:crudএতে তৈরি TestControllerকরে src/Testsযাতে এটি না থাকলে সার্ভার শুরু করার চেষ্টা করার সময় এটি ত্রুটি ফেলে দিতে পারে UnitTests। ফাইলটি সরিয়ে ফেলুন!


0

আমার জন্য, কারণ আমি দৌড়ে এসেছি

$ phpunit .

পরিবর্তে

$ phpunit

যখন আমি ইতিমধ্যে phpunit.xmlওয়ার্কিং ডিরেক্টরিতে একটি কনফিগার করা ফাইল ছিল ।


0

আমি যুক্ত করার জন্য উইন্ডোজ 10 তে জেন্ডার 1.12 সংস্করণ সহ পিএইচপি 5.6 ব্যবহার করছি

প্রয়োজনীয়_অনস 'পিএইচপিউনিট / অটোল্যাড.এফপি';

আগে

অ্যাবস্ট্রাক্ট শ্রেণি জেন্ডেস্টেস্ট_এইচপি ইউনিট_কন্ট্রোলার টেস্টকেস PHPUnit_Framework_TestCase প্রসারিত

কাজ করছে. আমাদের উপরোক্ত বিবৃতিটি কন্ট্রোলটার টেস্টকেস.এফপি ফাইলটিতে যুক্ত করতে হবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.