Anda sama sekali tidak memberikan informasi apa pun.
Pekka
Jalankan tes Anda melalui baris perintah phpunit. Itu memuat kelas yang diperlukan.
Halfstop
Anda juga dapat menggunakan jawaban dari jawaban berikut stackoverflow.com/questions/42811164/... untuk menjaga kode Anda kompatibel dengan PHPUnit 6 serta versi sebelumnya.
Robson
Jawaban:
73
The dokumentasi PHPUnit mengatakan digunakan untuk mengatakan untuk menyertakan / membutuhkan PHPUnit / Framework.php, sebagai berikut:
require_once ('PHPUnit/Framework/TestCase.php');
MEMPERBARUI
Pada PHPUnit 3.5, ada kelas autoloader bawaan yang akan menangani ini untuk Anda:
require_once 'PHPUnit/Autoload.php';
Terima kasih kepada Phoenix karena telah menunjukkan ini!
Bagi mereka yang tiba di sini setelah memperbarui phpunit ke versi 6 atau lebih besar dirilis pada 2017-02-03 (mis. Dengan komposer), Anda mungkin mendapatkan kesalahan ini karena kode phpunit sekarang namespaced (periksa changelog ).
Anda akan perlu untuk refactor hal-hal seperti \PHPUnit_Framework_TestCaseuntuk\PHPUnit\Framework\TestCase
Terima kasih, saya mengalami masalah ini karena Travis CI menggunakan versi PHPUnit terbaru pada versi PHP 7 mereka. Perbaikan saya adalah secara manual mengunduh phar lama dan menggunakannya sebagai gantinya.
Terima kasih, tuan. Saya memang tiba di sini setelah meningkatkan ke versi 6.
h4ckNinja
Saya menjadi sangat kesal karena tes saya tiba-tiba berhenti bekerja. Saya melakukan pembaruan komposer dan memutakhirkan PHPunit saya ke 6.1. Terima kasih.
Jed Lynch
38
Untuk versi phpunit yang lebih tinggi seperti 6.4
Anda harus menggunakan namespace PHPUnit \ Framework \ TestCase
gunakan TestCase sebagai gantinya PHPUnit_Framework_TestCase
// use the following namespaceusePHPUnit\Framework\TestCase;// extend using TestCase instead PHPUnit_Framework_TestCaseclassSampleTestextendsTestCase{}
Sangat baik ini bekerja untuk saya karena saya mengikuti tutorial lama
Anda baru saja menyalin jawaban shadi
Adam
@ Adam siapa yang shadi?
Jijesh Cherrai
Saya tidak tahu hal seperti itu. Saya mendapat kesalahan yang sama kemudian saya mencari jawabannya dengan memecahkan paket
Jijesh Cherrai
13
Anda mungkin mendapatkan kesalahan ini karena Anda menempatkan file di tempat. Jika demikian, Anda harus menentukan bahwa PHPUnit_Framework_TestCase ada di namespace global dengan mendahului dengan backslash:
Ya, jika Anda melakukan ini: class YourNiceTest extends PHPUnit_Framework_TestCasetambahkan saja \ di depan kelas yang diperluas, seperti di class YourNiceTest extends \PHPUnit_Framework_TestCase- Ini berfungsi untuk saya, menggunakan Symfony 2.8dan termasuk phpunitdalam file komposer yang diunduh sebagai ketergantungan lokal dengan"phpunit/phpunit": "^4.8"
Xavi Montero
12
Saya menjalankan tes PHPUnit di PHP5, dan kemudian, saya perlu mendukung PHP7 juga. Inilah yang saya lakukan:
Dalam composer.json:
"phpunit/phpunit":"~4.8|~5.7"
Dalam file bootstrap PHPUnit saya (dalam kasus saya, /tests/bootstrap.php):
// PHPUnit 6 introduced a breaking change that// removed PHPUnit_Framework_TestCase as a base class,// and replaced it with \PHPUnit\Framework\TestCaseif(!class_exists('\PHPUnit_Framework_TestCase')&& class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase','\PHPUnit_Framework_TestCase');
Dengan kata lain, ini akan berfungsi untuk tes yang awalnya ditulis untuk PHPUnit 4 atau 5, tetapi kemudian harus bekerja pada PHPUnit 6 juga.
Ini tidak lagi berfungsi karena PHPUnit terbaru tidak lagi mendukung nama kelas lama seperti PHPUnit_Framework_TestCase. Anda benar-benar harus menggunakan... extends PHPUnit\Framework\TestCase
Mikko Rantalainen
Hanya mengatakan bahwa saya harus pertama mv phpunit /usr/local/bin/phpunitdan kemudian sudo chmod +x /usr/local/bin/phpunit. Mengatur file sebagai executable sebelum memindahkannya tidak pernah bekerja di Vagrant Ubuntu. Tidak tahu kenapa ... Tapi kalau-kalau ada yang berjuang dengan ini, saya harap ini akan membantu.
George Mylonas
4
Anggapan:
Phpunit (3.7) tersedia di lingkungan konsol.
Tindakan:
Masukkan perintah berikut di konsol:
SHELL> phpunit "{{PATH TO THE FILE}}"
Komentar:
Anda tidak perlu memasukkan apa pun dalam versi baru PHPUnit kecuali Anda tidak ingin menjalankannya di konsol. Misalnya, menjalankan tes di browser.
Jika Anda memiliki Centos atau distribusi Linux lain Anda harus menginstal paket phpunit, saya melakukannya dengan yum instal phpunit dan itu berhasil. Mungkin Anda harus menambahkan repositori, tetapi saya pikir itu harus bekerja dengan lancar dengan yang standar (Saya punya CentOS 7)
Mungkin Anda menjalankan tes inti WordPress, dan baru-baru ini memutakhirkan PhpUnit Anda ke versi 6. Jika itu masalahnya, maka perubahan baru-baru ini untuk namespacing di PhpUnit akan merusak kode Anda.
Untungnya, ada tambalan ke tes inti di https://core.trac.wordpress.org/changeset/40547 yang akan mengatasi masalah tersebut. Ini juga termasuk perubahan pada travis.yml, yang mungkin tidak Anda miliki dalam pengaturan Anda; jika itu masalahnya maka Anda harus mengedit file .diff untuk mengabaikan tambalan Travis.
Simpan diff di direktori di atas direktori / include / Anda - dalam kasus saya ini adalah direktori Wordpress itu sendiri
Gunakan alat tambalan Unix untuk menambal file. Anda juga harus menghapus beberapa garis miring pertama untuk berpindah dari absolut ke struktur direktori relatif. Seperti yang Anda lihat dari poin 3 di atas, ada lima garis miring sebelum direktori include, yang mana flag -p5 akan dihapuskan untuk Anda.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
Setelah saya melakukan ini, tes saya berjalan dengan benar lagi.
PEMBERITAHUAN: Command php bin/console generate:doctrine:crudjuga membuat TestControllerdi src/Testssehingga dapat melempar kesalahan saat Anda mencoba untuk memulai server jika Anda tidak memiliki UnitTests. Hapus file perbaiki!
Jawaban:
The dokumentasi PHPUnit
mengatakandigunakan untuk mengatakan untuk menyertakan / membutuhkan PHPUnit / Framework.php, sebagai berikut:MEMPERBARUI
Pada PHPUnit 3.5, ada kelas autoloader bawaan yang akan menangani ini untuk Anda:
Terima kasih kepada Phoenix karena telah menunjukkan ini!
sumber
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
danPHPUnit/Framework/TestCase.php
, folder saya sepertiPHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Bagi mereka yang tiba di sini setelah memperbarui phpunit ke versi 6 atau lebih besar dirilis pada 2017-02-03 (mis. Dengan komposer), Anda mungkin mendapatkan kesalahan ini karena kode phpunit sekarang namespaced (periksa changelog ).
Anda akan perlu untuk refactor hal-hal seperti
\PHPUnit_Framework_TestCase
untuk\PHPUnit\Framework\TestCase
sumber
Untuk versi phpunit yang lebih tinggi seperti 6.4 Anda harus menggunakan namespace PHPUnit \ Framework \ TestCase
gunakan TestCase sebagai gantinya PHPUnit_Framework_TestCase
sumber
Anda mungkin mendapatkan kesalahan ini karena Anda menempatkan file di tempat. Jika demikian, Anda harus menentukan bahwa PHPUnit_Framework_TestCase ada di namespace global dengan mendahului dengan backslash:
Saya mengirimkan PR kasar untuk memulai percakapan untuk memperbaiki dokumentasi .
sumber
class YourNiceTest extends PHPUnit_Framework_TestCase
tambahkan saja \ di depan kelas yang diperluas, seperti diclass YourNiceTest extends \PHPUnit_Framework_TestCase
- Ini berfungsi untuk saya, menggunakanSymfony 2.8
dan termasukphpunit
dalam file komposer yang diunduh sebagai ketergantungan lokal dengan"phpunit/phpunit": "^4.8"
Saya menjalankan tes PHPUnit di PHP5, dan kemudian, saya perlu mendukung PHP7 juga. Inilah yang saya lakukan:
Dalam composer.json:
Dalam file bootstrap PHPUnit saya (dalam kasus saya,
/tests/bootstrap.php
):Dengan kata lain, ini akan berfungsi untuk tes yang awalnya ditulis untuk PHPUnit 4 atau 5, tetapi kemudian harus bekerja pada PHPUnit 6 juga.
sumber
Anda cukup menginstal PHPUnit untuk menjalankan perintah ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
Jalankan tes tunggal
Dan kemudian jalankan uji PHPunit:
Isi file uji adalah sebagai berikut:
Jalankan test suite
Konfigurasi suite tes: demosuite.xml.
demo
adalah direktori yang berisi semua tes. File uji harus dinamai sebagai*_test.php
(suffix
).Test suite dijalankan dengan perintah berikut:
sumber
PHPUnit_Framework_TestCase
. Anda benar-benar harus menggunakan... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
dan kemudiansudo chmod +x /usr/local/bin/phpunit
. Mengatur file sebagai executable sebelum memindahkannya tidak pernah bekerja di Vagrant Ubuntu. Tidak tahu kenapa ... Tapi kalau-kalau ada yang berjuang dengan ini, saya harap ini akan membantu.Anggapan:
Tindakan:
Masukkan perintah berikut di konsol:
Komentar:
Anda tidak perlu memasukkan apa pun dalam versi baru PHPUnit kecuali Anda tidak ingin menjalankannya di konsol. Misalnya, menjalankan tes di browser.
sumber
Saya menggunakan ZF2 dan berfungsi untuk saya ketika mengganti 'PHPUnit_Framework_TestCase' menjadi '\ PHPUnit \ Framework \ TestCase'
sumber
Jika Anda memiliki Centos atau distribusi Linux lain Anda harus menginstal paket phpunit, saya melakukannya dengan yum instal phpunit dan itu berhasil. Mungkin Anda harus menambahkan repositori, tetapi saya pikir itu harus bekerja dengan lancar dengan yang standar (Saya punya CentOS 7)
sumber
Mungkin Anda menjalankan tes inti WordPress, dan baru-baru ini memutakhirkan PhpUnit Anda ke versi 6. Jika itu masalahnya, maka perubahan baru-baru ini untuk namespacing di PhpUnit akan merusak kode Anda.
Untungnya, ada tambalan ke tes inti di https://core.trac.wordpress.org/changeset/40547 yang akan mengatasi masalah tersebut. Ini juga termasuk perubahan pada travis.yml, yang mungkin tidak Anda miliki dalam pengaturan Anda; jika itu masalahnya maka Anda harus mengedit file .diff untuk mengabaikan tambalan Travis.
Edit file tambalan untuk menghapus bagian Travis dari tambalan jika Anda tidak membutuhkannya. Hapus dari atas file hingga tepat di atas baris ini:
Simpan diff di direktori di atas direktori / include / Anda - dalam kasus saya ini adalah direktori Wordpress itu sendiri
Gunakan alat tambalan Unix untuk menambal file. Anda juga harus menghapus beberapa garis miring pertama untuk berpindah dari absolut ke struktur direktori relatif. Seperti yang Anda lihat dari poin 3 di atas, ada lima garis miring sebelum direktori include, yang mana flag -p5 akan dihapuskan untuk Anda.
Setelah saya melakukan ini, tes saya berjalan dengan benar lagi.
sumber
PEMBERITAHUAN: Command
php bin/console generate:doctrine:crud
juga membuatTestController
disrc/Tests
sehingga dapat melempar kesalahan saat Anda mencoba untuk memulai server jika Anda tidak memilikiUnitTests
. Hapus file perbaiki!sumber
Bagi saya, itu karena saya berlari
dari pada
ketika saya sudah memiliki
phpunit.xml
file yang dikonfigurasi di direktori kerja.sumber
Saya menggunakan php 5.6 di jendela 10 dengan versi zend 1.12 untuk saya tambahkan
sebelum
bekerja. Kita perlu menambahkan pernyataan di atas dalam file ControllerTestCase.php
sumber