Phpunit tingkatkan 8 ke 9

Drupal 9. 1. x telah diperbarui ke PHPUnit 9. Instal di PHP 7. 3 akan terus menggunakan PHPUnit 8. 4 untuk alasan kompatibilitas

Sebagian besar tes seharusnya tidak terpengaruh, namun, modul mungkin perlu memperhitungkan hal-hal berikut

  • ::assertContains() sekarang melakukan perbandingan tipe yang ketat yang dapat menyebabkan beberapa tes gagal. PHPUnit sudah menyediakan ::assertContainsEquals() yang lebih permisif sehingga tes dapat diperbarui untuk menggunakan ini tanpa merusak PHP 7. 3 kompatibilitas
  • Core telah menambahkan Drupal\Tests\PhpUnitCompatibilityTrait_ baru ke semua kelas dasar. Tes kontribusi dan kustom harus selalu diperluas dari kelas tes dasar inti, jadi lebih baik melakukannya daripada menambahkan sifat secara langsung

Jika Anda bergantung pada drupal/core-dev dan Anda melihat kesalahan yang mirip dengan ini saat menjalankan pengujian inti

PHP Fatal error:  Trait 'Prophecy\PhpUnit\ProphecyTrait' not found in core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit9/TestCompatibilityTrait.php on line 12

maka Anda perlu menambahkan ketergantungan ekstra

composer require --dev phpspec/prophecy-phpunit:^2
_

Ini karena PHPUnit 8 menyertakan integrasi Prophecy, tetapi PHPUnit 9 tidak. Kami tidak dapat bergantung pada paket ini secara langsung sambil mendukung kedua versi PHPUnit

Jika Anda menginstal Drupal dengan drupal/core-recommended, pastikan untuk menjalankan perintah di atas dalam root proyek Anda alih-alih direktori core

Hal di atas mengasumsikan bahwa Anda telah mengunduh phpunit.phar_ dan memasukkannya ke dalam $PATH Anda sebagai phpunit dan bahwa src/autoload.php adalah skrip yang menyiapkan pemuatan otomatis untuk kelas yang akan diuji. Skrip seperti itu biasanya dihasilkan menggunakan alat seperti

Komposer

➜ ./vendor/bin/phpunit tests
PHPUnit 9.0.0 by Sebastian Bergmann and contributors.

..                                                                 3 / 3 (100%)

Time: 70 ms, Memory: 10.00MB

OK (3 tests, 3 assertions)

Di atas mengasumsikan bahwa vendor/autoload.php_, skrip autoloader yang dikelola oleh Komposer, ada dan dapat memuat kode untuk kelas Email. Bergantung pada cara Anda menyiapkan pemuatan otomatis, Anda mungkin perlu menjalankan composer dump-autoload sekarang

Tim pengembangan PHPUnit mengumumkan ketersediaan segera PHPUnit 9. Rilis ini menambahkan fitur baru, mengubah dan menghapus fitur yang ada, serta memperbaiki bug

Daftar detail perubahan tersedia. Lebih banyak latar belakang tentang beberapa perubahan ini diberikan di sini

PHPUnit sekarang membutuhkan PHP 7. 3 (atau lebih baru)

Dukungan aktif untuk PHP 7. 2 berakhir pada 30 November 2019. Satu-satunya versi PHP yang didukung secara aktif pada 7 Februari 2020 adalah PHP 7. 3 dan PHP7. 4

PHPUnit sekarang menggunakan (lebih) sintaks PHP 7

Baris pertama kode untuk PHPUnit ditulis kembali ketika PHP 4 adalah "terbaru dan terhebat". Agar PHPUnit tetap kompatibel dengan versi baru PHP dan untuk memungkinkan fitur baru, basis kode PHPUnit memerlukan modernisasi konstan

Sebastian Bergmann menghabiskan ribuan jam untuk mengembangkan, menguji, dan mendukung PHPUnit

Dengan keluarnya rilis baru ini, mungkin sekaranglah waktunya untuk berkontribusi pada pengembangan PHPUnit atau mensponsori pekerjaan Sebastian

Banyak waktu dan upaya yang dihabiskan untuk pengembangan PHPUnit 9 untuk memanfaatkan fitur bahasa dengan lebih baik seperti interpretasi yang ketat dari deklarasi tipe skalar, misalnya, yang diperkenalkan di PHP 7

Perubahan Tidak Kompatibel Mundur

Fungsi berikut telah dihapus

  • Anotasi untuk mengharapkan pengecualian
  • Pernyataan (dan metode pembantu) yang beroperasi pada atribut (non-publik).
  • Parameter opsional assertEquals() dan assertNotEquals()
  • Parameter opsional assertContains() dan assertNotContains()
  • Parameter opsional assertFileEquals() dll
  • assertInternalType() dan assertNotInternalType()
  • assertArraySubset()
  • setUseErrorHandler()
  • expectExceptionMessageRegExp()
  • Dukungan untuk menggandakan banyak antarmuka
  • Dukungan untuk menggunakan nama kelas sebagai argumen CLI
  • Dukungan untuk mendeklarasikan lebih dari satu kelas kasus uji dalam file sumber uji

Sedang mencari

Fitur berikut telah ditinggalkan di PHPUnit 9

  • assertNotEquals()0
  • assertNotEquals()1
  • Dukungan untuk assertNotEquals()_2 sebagai nilai untuk assertNotEquals()3 dan assertNotEquals()4 anotasi

Fitur yang tidak digunakan lagi di PHPUnit 9 akan dihapus di PHPUnit 10

Mendapatkan PHPUnit 9

Kami mendistribusikan Arsip PHP (PHAR) yang berisi semua yang Anda butuhkan untuk menggunakan PHPUnit. Sebagai alternatif, Anda dapat menggunakan Komposer untuk mengunduh dan menginstal PHPUnit serta dependensinya

Berikut adalah tutorial yang akan Anda mulai

Versi yang Didukung

Informasi mendetail tentang versi PHPUnit yang didukung tersedia di sini. Di bawah ini adalah ringkasan per 7 Februari 2020

Apakah PHPUnit mendukung PHP 8?

PHPUnit 8. 5 berfungsi untuk kode PHP yang kompatibel dengan PHP 7. 2 pada PHP 8 . Namun, PHPUnit 8. Generator kode ganda uji 5 tidak mendukung sintaks tipe gabungan PHP 8, misalnya.

Bagaimana cara menginstal PHPUnit PHPUnit?

Unduh dan instal phpunit. .
Komposer dalam. json, tambahkan catatan dependensi phpunit/phpunit ke bagian wajib atau wajib-dev. Tekan Ctrl+Spasi untuk mendapatkan penyelesaian kode untuk nama dan versi paket
Lakukan salah satu dari berikut ini. Klik tautan Instal pintasan di bagian atas panel editor

Bagaimana cara menjalankan tes PHPUnit di baris perintah?

Ketika dipanggil seperti yang ditunjukkan di atas, pelari uji baris perintah PHPUnit akan mencari ArrayTest. file sumber php di direktori kerja saat ini, muat, dan berharap menemukan kelas kasus uji ArrayTest . Itu kemudian akan menjalankan tes dari kelas itu.

Bagaimana cara menggunakan PHPUnit di WordPress?

#Buat Contoh Plugin Buat Contoh Plugin .
Catatan. Anda dapat melewati langkah ini jika ingin menyiapkan pengujian PHPUnit untuk plugin atau tema yang ada
Langkah 1. Buat sampel-plugin direktori kosong
Langkah 2. Buat sampel-plugin file baru. php
Langkah 3. Salin dan tempel kode di bawah ini di dalamnya
Langkah 4. Itu dia