Çalışan Testler
Nette Tester'ın en görünür kısmı komut satırı test çalıştırıcısıdır. Son derece hızlı ve sağlamdır, çünkü tüm testleri otomatik olarak birden fazla iş parçacığında paralel olarak ayrı işlemler olarak başlatır. Ayrıca kendini izleme modunda da çalıştırabilir.
Nette Tester test çalıştırıcısı komut satırından çağrılır. Parametre olarak test dizinini geçeceğiz. Geçerli dizin için sadece bir nokta girin:
vendor/bin/tester .
Çağrıldığında, test koşucusu belirtilen dizini ve tüm alt dizinleri tarar ve *.phpt
ve
*Test.php
dosyaları olan testleri arar. Ayrıca hangilerinin ve nasıl çalıştırılacağını bilmek için ek açıklamalarını okur ve değerlendirir.
Daha sonra testleri yürütecektir. Tamamlanan her test için, koşucu ilerlemeyi göstermek için bir karakter yazdırır:
.
– test geçtis
– test atlandıF
– test başarısız
Çıktı aşağıdaki gibi görünebilir:
_____ ___ ___ _____ ___ ___
|_ _/ __)( __/_ _/ __)| _ )
|_| \___ /___) |_| \___ |_|_\ v2.5.2
Note: No php.ini is used.
PHP 8.3.2 (cli) | php -n | 8 threads
........s..........................
OK (35 tests, 1 skipped, 1.7 seconds)
Tekrar çalıştırdığınızda, ilk olarak önceki çalıştırma sırasında başarısız olan testleri çalıştırır, böylece hatayı düzeltip düzeltmediğinizi hemen anlarsınız.
Hiç kimse başarısız olmazsa test cihazının çıkış kodu sıfırdır. Aksi takdirde sıfır değildir.
Tester PHP süreçlerini php.ini
olmadan çalıştırır. Daha fazla ayrıntı Kendi php.ini bölümünde.
Komut Satırı Seçenekleri
Tester'ı parametresiz veya -h
seçeneği ile çalıştırarak komut satırı seçeneklerine genel bakış elde
ederiz:
_____ ___ ___ _____ ___ ___ |_ _/ __)( __/_ _/ __)| _ ) |_| \___ /___) |_| \___ |_|_\ v2.5.2 Usage: tester [options] [<test file> | <directory>]... Options: -p <path> Specify PHP interpreter to run (default: php). -c <path> Look for php.ini file (or look in directory) <path>. -C Use system-wide php.ini. -d <key=value>... Define INI entry 'key' with value 'value'. -s Show information about skipped tests. --stop-on-fail Stop execution upon the first failure. -j <num> Run <num> jobs in parallel (default: 8). -o <console|console-lines|tap|junit|log|none> (örneğin -o junit:output.xml) İsteğe bağlı dosya adıyla birlikte bir veya daha fazla çıktı biçimi belirtin. -w | --watch <path> Watch directory. -i | --info Show tests environment info and exit. --setup <path> Script for runner setup. --temp <path> Geçici dizine giden yol. Varsayılan değer sys_get_temp_dir(). --colors [1|0] Enable or disable colors. --coverage <path> Generate code coverage report to file. --coverage-src <path> Path to source code. -h | --help This help.
-p <path>
Testleri çalıştırmak için kullanılacak PHP ikilisini belirtir. Varsayılan olarak php
şeklindedir.
tester -p /home/user/php-7.2.0-beta/php-cgi tests
-c <path>
Testleri çalıştırırken hangi php.ini
adresinin kullanılacağını belirtir. Varsayılan olarak php.ini
kullanılmaz. Daha fazla bilgi için Own php.ini bölümüne bakın.
-C
Sistem genelinde bir php.ini
kullanılır. Yani UNIX platformunda, tüm /etc/php/{sapi}/conf.d/*.ini
dosyaları da. Kendi php.ini bölümüne bakın.
-d <key=value>
Sınamalar için PHP yapılandırma yönergesinin değerini ayarlar. Değiştirge birden çok kez kullanılabilir.
tester -d max_execution_time=20
-s
Atlanan testler hakkında bilgi gösterilecektir.
--başarısızlık durumunda durdur
Test cihazı ilk başarısız testte testi durdurur.
-j <num>
Testler bir <num>
paralel ön işlemler. Varsayılan değer 8'dir. Testleri seri olarak çalıştırmak
istiyorsak 1 değerini kullanırız.
-o <console|console-lines|tap|junit|log|none>
Çıktı biçimi. Varsayılan biçim konsol biçimidir. Çıktının içine yazılacağı dosyanın adını belirtebilirsiniz
(örneğin, -o junit:output.xml
). Aynı anda birden fazla format oluşturmak için -o
seçeneği birden
fazla kez tekrarlanabilir.
console
: varsayılan ile aynı, ancak ASCII logosu bu durumda yazdırılmazconsole-lines
: konsola benzer, ancak her testin sonucu daha fazla bilgi ile ayrı bir satırda listelenirtap
: Makine işlemesi için uygun TAP formatıjunit
: JUnit XML formatı, makine işlemesi için de uygunlog
: Test ilerlemesini çıktılar. Tüm başarısız, atlanmış ve ayrıca başarılı testlernone
: hiçbir şey yazdırılmaz
-w | --watch <path>
Tester, testler tamamlandıktan sonra sona ermez, ancak verilen dizindeki PHP dosyalarını çalıştırmaya ve izlemeye devam eder. Değiştirildiğinde testleri tekrar çalıştırır. Birden fazla dizini izlemek istiyorsak parametre birden fazla kez kullanılabilir.
Bir kütüphanenin yeniden düzenlenmesi veya testlerde hata ayıklama sırasında kullanışlıdır.
tester --watch src tests
-i | --info
Bir test çalıştırma ortamı hakkındaki bilgileri gösterir. Örneğin:
tester -p /usr/bin/php7.1 -c tests/php.ini --info PHP binary: /usr/bin/php7.1 PHP version: 7.1.7-1+0~20170711133844.5+jessie~1.gbp5284f4 (cli) Code coverage engines: (not available) Loaded php.ini files: /var/www/dev/demo/tests/php.ini PHP temporary directory: /tmp Loaded extensions: Core, ctype, date, dom, ereg, fileinfo, filter, hash, ...
--kurulum <path>
Tester başlangıçta verilen PHP betiğini yükler. İçinde Tester\Runner\Runner $runner
değişkeni mevcuttur.
tests/runner-setup.php
dosyasını varsayalım:
$runner->outputHandlers[] = new MyOutputHandler;
ve Testernı çalıştırıyoruz:
tester --setup tests/runner-setup.php tests
--temp <path>
Tester'ın geçici dosyaları için bir dizin yolu ayarlar. Varsayılan değer sys_get_temp_dir()
tarafından
döndürülür. Varsayılan değer geçerli olmadığında, fark edilirsiniz.
Hangi dizinin kullanıldığından emin değilsek Tester'ı --info
parametresiyle çalıştırabiliriz.
--colors 1|0
Tester varsayılan olarak renklendirilebilir bir terminali algılar ve çıkışını renklendirir. Bu seçenek otomatik
algılamanın üzerindedir. Renklendirmeyi global olarak bir sistem ortam değişkeni ile ayarlayabiliriz
NETTE_TESTER_COLORS
.
--kapsam <path>
Test cihazı, kaynak kodun testler tarafından ne kadar kapsandığını gösteren bir rapor oluşturacaktır. Bu seçenek, PHP uzantısı Xdebug veya PCOV 'un etkinleştirilmesini veya daha hızlı olan PHPDBG SAPI ile PHP 7'yi gerektirir. Hedef dosya uzantısı içeriğin formatını belirler. HTML veya Clover XML.
tester tests --coverage coverage.html # HTML report tester tests --coverage coverage.xml # Clover XML report
Toplama mekanizmasını seçme önceliği aşağıdaki gibidir:
- PCOV
- PHPDBG
- Xdebug
Kapsamlı testler PHPDBG tarafından çalıştırılırken bellek tükenmesi nedeniyle başarısız olabilir. Kapsama veri
toplama işlemi bellek tüketen bir işlemdir. Bu durumda, bir testin içinde Tester\CodeCoverage\Collector::flush()
adresini çağırmak yardımcı olabilir. Toplanan verileri dosyaya aktarır ve belleği boşaltır. Veri toplama işlemi devam
etmediğinde veya Xdebug kullanıldığında, çağrının bir etkisi yoktur.
Kod kapsamı ileBir HTML raporu örneği.
--coverage-src <path>
Bunu --coverage
seçeneği ile aynı anda kullanıyoruz. Bu <path>
raporu oluşturduğumuz
kaynak koda giden bir yoldur. Tekrar tekrar kullanılabilir.
Kendi php.ini
Tester PHP süreçlerini -n
seçeneği ile çalıştırır, bu da php.ini
'un yüklenmediği
anlamına gelir (UNIX'te /etc/php/conf.d/*.ini
'dan bile). Bu, çalıştırılan testler için aynı ortamı sağlar,
ancak aynı zamanda sistem PHP'si tarafından yaygın olarak yüklenen tüm harici PHP uzantılarını devre dışı
bırakır.
Sistem yapılandırmasını saklamak istiyorsanız -C
parametresini kullanın.
Bazı uzantılara veya bazı özel INI ayarlarına ihtiyacınız varsa, kendi php.ini
dosyanızı oluşturmanızı
ve bunu testler arasında dağıtmanızı öneririz. Daha sonra Tester'ı -c
seçeneği ile çalıştırıyoruz,
örneğin tester -c tests/php.ini
. INI dosyası aşağıdaki gibi görünebilir:
[PHP]
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
memory_limit=512M
Tester'ı UNIX'te bir sistem php.ini
ile çalıştırmak, örneğin tester -c /etc/php/cgi/php.ini
,
/etc/php/conf.d/*.ini
adresinden diğer INI'leri yüklemez. Bu PHP'nin davranışıdır, Tester'ın değil.