Paket ini memungkinkan Anda membuat pengujian PHPUnit dari anotasi, yang dapat Anda tulis di dokumentasi metode Anda.
Cara yang lebih disukai untuk memasang ekstensi ini adalah melalui komposer.
Jalankan saja
composer require hyperia/codecept-unittest-generator: " ^1.0 "
atau tambahkan
"hyperia/codecept-unittest-generator": "^1.0"
ke bagian require di composer.json Anda.
aktifkan ekstensi UnitGenerator
di file konfigurasi dasar /codeception.yml
:
extensions :
enabled :
- CodeceptionExtensionRunFailed
commands :
- CodeceptionCommandUnitGenerator
unitgenerator :
config :
# erase old target files with new one
overwrite : true
# if you want to generate tests for Interface too
interface : false
# automaticaly generate tests for getter / setter method
auto : true
# ignore errors that can be ignored
ignore : true
# regex (/.*config.php/ for example) that files must not match to have a tests generation
exclude : ' /.*Trait.*/ '
# regex (/.*.php/ for example) that files should match to have a tests generation
include : ' /.*.php/ '
dirs :
# source directory => target directory
- common/models : tests/unit/unitgen/common/models/
- console/models : tests/unit/unitgen/console/models/
./vendor/bin/codecept generate:unit
/**
* @PHPUnitGen<phpunit_assertion_method>(<expectation>:{<parameters...>})
*/
Anotasi ini menggunakan beberapa parameter:
phpunit_assertion_method : Ini adalah metode pernyataan PHPUnit yang ingin Anda gunakan (seperti menegaskanEquals , menegaskanInstanceOf , menegaskanTrue ...).
ekspektasi : Metode mengembalikan nilai yang diharapkan. Beberapa metode PHPUnit tidak memerlukannya (seperti menegaskanTrue ), jadi dalam kasus tersebut, dapat berupa null.
parameter : Parameter metode.
Lihat contoh ini, kami ingin membuat beberapa pengujian sederhana secara otomatis untuk metode ini:
<?php
// The class to test content
/** @PHPUnitGenAssertEquals('expected string':{1, 2, 'a string'}) */
/** @PHPUnitGenAssertTrue(:{4, 5, 'another'}) */
/** @PHPUnitGenAssertEquals(null) */
/** @PHPUnitGenAssertNull() */
public function method ( int $ arg1 = 0 , int $ arg2 = 0 , string $ arg3 = ' default ' ) {}
Anotasi tersebut akan membuat pengujian PHPUnit dasar:
<?php
// The generated test for "method" in tests class
$ this -> assertEquals ( ' expectation string ' , $ this -> method ( 1 , 2 , ' a string ' ));
$ this -> assertTrue ( $ this -> method ( 4 , 5 , ' another ' ));
$ this -> AssertEquals ( null , $ this -> method ());
$ this -> assertNull ( $ this -> method ());
<?php
// The class to test content
/** @PHPUnitGenGet() */
/** @PHPUnitGenSet() */
Kedua anotasi tersebut akan memungkinkan Anda membuat pengujian secara otomatis untuk pengambil/penyetel sederhana. Pengambil/penyetel Anda perlu diberi nama seperti berikut:
get<MyProperty>() {}
set<MyProperty>() {}
PHPUnit Generator memiliki opsi "otomatis": Jika Anda mengaktifkannya, ia akan mencari properti ketika ia menemukan metode yang dimulai dengan "dapatkan" atau "set", dan jika properti itu ada, ia akan menghasilkan pengujian.
Jika metode yang akan diuji bersifat pribadi atau dilindungi, PHPUnit Generator akan mengakses metode tersebut dengan PHP ReflectionClass.
UnitGenerator memerlukan komponen berikut untuk dijalankan: