Mencoba menegaskan gambar dengan PHPUnit? Proyek ini memberikan batasan dan pernyataan yang diperlukan yang memungkinkan Anda melakukannya.
Ini mendukung perbandingan file pada disk serta sumber daya gambar di memori.
Tambahkan paket ini ke dependensi dev Komposer Anda:
composer require --dev meyfa/phpunit-assert-gd
Tabel kompatibilitas
Versi AssertGD | Versi PHP yang didukung | Versi PHPUnit yang didukung |
---|---|---|
4.* | >= 8.1 | 10.1 |
3.* | >= 7.3 | 9 |
2.* | >= 7.2 | 8 |
1.* | 5.3.3 - 8.0 | 4.8.36 - 6.5.0 |
Pernyataan tersedia sebagai suatu sifat, sehingga Anda dapat dengan mudah use
di kelas kasus pengujian Anda:
<?php
use AssertGD GDAssertTrait ;
class ExampleTest extends PHPUnit Framework TestCase
{
// this trait adds the assert methods to your test case
use GDAssertTrait;
public function testSomething ()
{
$ this -> assertSimilarGD ( ' ./tests/expected.png ' , ' ./tests/actual.png ' );
}
}
Gunakan assertSimilarGD
jika Anda mengharapkan 2 gambar sama persis. Gunakan assertNotSimilarGD
jika Anda memperkirakan akan ada perbedaan.
$ this -> assertSimilarGD ( ' ./tests/img.png ' , ' ./tests/same.png ' );
$ this -> assertNotSimilarGD ( ' ./tests/img.png ' , ' ./tests/other.png ' );
Berikan angka antara 0 dan 1 untuk mengatur ambang kesalahan. Misalnya, nilai 0,2 akan memungkinkan perbedaan paling banyak 20%.
$ this -> assertSimilarGD ( ' ./tests/img.png ' , ' ./tests/similar.png ' , '' , 0.2 );
Alih-alih jalur file, Anda dapat meneruskan sumber daya gambar GD. Ini menghilangkan keharusan menulis sesuatu ke disk sebelum melakukan perbandingan.
$ img = imagecreatetruecolor ( 10 , 10 );
$ this -> assertSimilarGD ( ' ./tests/empty-10x10.png ' , $ img );
imagedestroy ( $ img );
Jika Anda perlu mengonfigurasi objek tiruan atau melakukan panggilan pencocokan lain yang lebih kompleks, gunakan isSimilarGD
untuk mendapatkan objek batasan (mirip dengan apa yang akan dikembalikan oleh equalTo
, isTrue
, dll.).
$ this -> assertThat (
' ./tests/actual.png ' ,
$ this -> isSimilarGD ( ' ./tests/expected.png ' )
);
Secara default, pustaka ini menghitung perbedaan antara dua gambar dengan membandingkan informasi saluran warna RGBA pada setiap koordinat piksel gambar sumber dan gambar uji, dan merata-ratakan perbedaan antara setiap piksel untuk menghitung skor perbedaan.
Ini akan berhasil pada sebagian besar kasus, namun mungkin memberikan penilaian yang salah dalam keadaan tertentu, seperti gambar yang mengandung banyak transparansi.
Metode penghitungan alternatif, yang menskalakan saluran warna RGB berdasarkan transparansi alfa - artinya piksel yang lebih transparan akan mengurangi skor kesulitan untuk mengimbangi perbedaan yang kurang terlihat pada gambar itu sendiri - dapat diaktifkan dengan menambahkan instance ScaledRgbChannels
baru ke yang ke-5 parameter metode assertSimilarGD
atau assertNotSimilarGD
.
use AssertGD DiffCalculator ScaledRgbChannels ;
public function testImage ()
{
$ this -> assertSimilarGD (
' expected.png ' ,
' actual.png ' ,
'' ,
0 ,
new ScaledRgbChannels ()
);
}
Jika Anda ingin sepenuhnya menyesuaikan cara perhitungan dilakukan di perpustakaan ini, Anda juga dapat membuat algoritma perhitungan Anda sendiri dengan membuat kelas yang mengimplementasikan antarmuka AssertGdDiffCalculator
.
Kelas yang mengimplementasikan antarmuka ini harus menyediakan metode calculate
yang menyediakan dua instance GdImage
, dan koordinat X dan Y (sebagai ints
) dari piksel yang dibandingkan di kedua gambar.
Metode ini harus mengembalikan float
antara 0
dan 1
, dengan 0 sama persis dan 1 kebalikannya.
Anda kemudian dapat memberikan instance kelas sebagai parameter ke-5 dari metode assertSimilarGD
atau assertNotSimilarGD
untuk menggunakan metode penghitungan ini guna menentukan perbedaan gambar.