Testleri Çalıştırma
Nette Tester'ın en görünür parçası komut satırı test çalıştırıcısıdır. Son derece hızlı ve sağlamdır; çünkü tüm testleri, birden çok iş parçacığı kullanarak ayrı süreçler hâlinde paralel olarak otomatik çalıştırır. Kendini izleme kipinde de çalıştırabilir.
Test çalıştırıcısı komut satırından çağrılır. Testleri içeren dizini parametre olarak verin. Geçerli dizin için yalnızca bir nokta girin:
vendor/bin/tester .
Test çalıştırıcısı belirtilen dizini ve tüm alt dizinlerini tarar; *.phpt ya da *Test.php ile
biten dosyalar olan testleri arar. Ayrıca hangi testlerin ve nasıl çalıştırılacağını belirlemek için annotation'larını okuyup değerlendirir.
Her test dosyası kendi yalıtılmış PHP sürecinde çalışır ve çalıştırıcı bunlardan birkaçını aynı anda yürütür; yani paralellik birimi dosyadır. Tek bir dosyadaki kod bu yüzden sırayla çalışır. Bir TestCase tek bir dosyada yaşar, dolayısıyla metotları varsayılan olarak tek bir süreçte birbiri ardına çalışır; çalıştırıcının her test metodunu ayrı bir paralel süreç olarak çalıştırması için onu @testCase annotation'ıyla işaretleyin.
Ardından testleri yürütür. Yürütme sırasında ilerlemeyi göstermek için terminale karakterler yazdırır:
.– test geçtis– test atlandıF– test başarısız oldu
Çıktı şöyle görünebilir:
_____ ___ ___ _____ ___ ___
|_ _/ __)( __/_ _/ __)| _ )
|_| \___ /___) |_| \___ |_|_\ v2.6.1
PHP 8.5.2 (cli) | php | 8 threads
........s..........................
OK (35 tests, 1 skipped, 1.7 seconds)
Yeniden çalıştırıldığında önce bir önceki çalıştırmada başarısız olan testleri yürütür; böylece hatayı düzeltip düzeltmediğinizi hemen bilirsiniz.
Hiçbir test başarısız olmazsa Tester'ın çıkış kodu sıfırdır. Aksi hâlde sıfırdan farklıdır.
Komut Satırı Seçenekleri
Komut satırı seçeneklerine genel bakışı, Tester'ı parametresiz ya da -h seçeneğiyle çalıştırarak
alabilirsiniz:
_____ ___ ___ _____ ___ ___
|_ _/ __)( __/_ _/ __)| _ )
|_| \___ /___) |_| \___ |_|_\ v2.6.1
Usage:
tester [options] [<test file> | <directory>]...
Options:
-p <path> Specify PHP interpreter to run (default: php).
-c <path> Use custom php.ini, ignore system configuration.
-C With -c, include system configuration as well.
-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> (e.g. -o junit:output.xml)
Specify one or more output formats with optional file name.
-w | --watch <path> Watch directory.
-i | --info Show tests environment info and exit.
--setup <path> Script for runner setup.
--temp <path> Path to temporary directory. Default by 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 ikili dosyasını belirtir. Varsayılan olarak php'dir.
tester -p /home/user/php-7.2.0-beta/php-cgi tests
-c <path>
Özel bir php.ini dosyası kullanır ve sistem yapılandırmasını yok sayar. Bu, testleri belirli ayarlarla
çalıştırmak için yararlıdır. Daha fazla bilgi için bkz. Kendi php.ini
Dosyanız.
-C
-c ile birlikte kullanıldığında sistem yapılandırmasını da dahil eder (yok saymaz). Bkz. Kendi php.ini Dosyanız bölümü.
-d <key=value>
Testler için bir PHP yapılandırma yönergesinin değerini ayarlar. Bu parametre birden çok kez kullanılabilir.
tester -d max_execution_time=20
-s
Atlanan testler hakkında bilgi görüntüler.
--stop-on-fail
Tester, başarısız olan ilk testte test etmeyi durdurur.
-j <num>
Testlerin çalıştırılacağı paralel süreç sayısını belirtir. Varsayılan değer 8'dir. Testleri sırayla çalıştırmak için 1 değerini kullanın.
-o <console|console-lines|tap|junit|log|none>
Çıktı biçimini ayarlar. Varsayılan konsol biçimidir. Çıktının yazılacağı dosyanın adını belirtebilirsiniz
(örneğin -o junit:output.xml). -o seçeneği, birden çok biçimi aynı anda üretmek için defalarca
yinelenebilir.
console: varsayılan biçimle aynı, ama bu durumda ASCII logo yazdırılmazconsole-lines: konsola benzer, ama her testin sonucu ek bilgilerle ayrı bir satırda listelenirtap: makineyle işlemeye uygun TAP biçimijunit: yine makineyle işlemeye uygun JUnit XML biçimilog: test ilerlemesini çıktılar. Başarısız, atlanan ve ayrıca başarılı tüm testleri içerirnone: hiçbir şey yazdırılmaz
-w | --watch <path>
Testler tamamlandıktan sonra Tester çıkmaz, çalışmayı sürdürür ve belirtilen dizindeki PHP dosyalarını izler. Bir dosya değiştiğinde testleri yeniden çalıştırır. Birden çok dizini izlemek isterseniz bu parametre defalarca kullanılabilir.
Bir kütüphaneyi yeniden düzenlerken ya da testlerde hata ayıklarken yararlıdır.
tester --watch src tests
-i | --info
Testler için çalışma ortamı hakkında bilgi 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, ...
--setup <path>
Tester, başlangıçta belirtilen PHP betiğini yükler. Bu betiğin içinde Tester\Runner\Runner $runner
değişkeni kullanılabilir. Şu içeriğe sahip bir tests/runner-setup.php dosyası düşünün:
$runner->outputHandlers[] = new MyOutputHandler;
Tester'ı şöyle çalıştırırız:
tester --setup tests/runner-setup.php tests
--temp <path>
Tester'ın geçici dosyaları için dizin yolunu ayarlar. Varsayılan değeri sys_get_temp_dir() döndürür.
Varsayılan değer geçerli değilse bilgilendirilirsiniz.
Hangi dizinin kullanıldığından emin değilseniz, Tester'ı --info parametresiyle çalıştırın.
--colors 1|0
Tester varsayılan olarak terminalin renkleri destekleyip desteklemediğini saptar ve çıktısını buna göre renklendirir.
Bu seçenek otomatik saptamayı geçersiz kılar. Renklendirmeyi NETTE_TESTER_COLORS ortam değişkeniyle genel
olarak ayarlayabilirsiniz.
--coverage <path>
Tester, kaynak kodun ne kadarının testlerle kapsandığını gösteren bir rapor üretir. Bu seçenek, Xdebug ya da PCOV PHP eklentisinin kurulu olmasını veya daha hızlı olan PHPDBG SAPI'sini gerektirir. Hedef dosyanın uzantısı biçimini belirler: HTML ya da Clover XML.
tester tests --coverage coverage.html # HTML raporu tester tests --coverage coverage.xml # Clover XML raporu
Kapsam motorunun seçilme önceliği şöyledir:
- PCOV
- PHPDBG
- Xdebug
PHPDBG kullanılırken kapsamlı testler bellek tükenmesi nedeniyle başarısız olabilir. Kod kapsamı bilgisi toplamak
bellek yoğundur. Bu durumda testinizin içinde Tester\CodeCoverage\Collector::flush() çağırmak yardımcı
olabilir. Bu, toplanan veriyi diske yazar ve belleği serbest bırakır. Çağrının etkisi yalnızca PHPDBG motorunda vardır;
PCOV, Xdebug ile ya da veri toplama çalışmıyorken hiçbir şey yapmaz.
Kod kapsamı içeren bir `örnek HTML raporuna bakın.
--coverage-src <path>
--coverage seçeneğiyle birlikte kullanılır. <path>, raporun üretildiği kaynak kodun
yoludur. Birden çok kez kullanılabilir.
Kendi php.ini Dosyanız
Testleriniz için özel bir php.ini dosyası kullanabilirsiniz. Belirli eklentilere ya da özel INI ayarlarına
ihtiyacınız varsa, kendi php.ini dosyanızı oluşturup testlerinizle birlikte dağıtmanızı öneririz. Sonra
Tester'ı -c seçeneğiyle çalıştırın, örneğin tester -c tests/php.ini tests. INI dosyası
şöyle görünebilir:
[PHP]
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
memory_limit=512M
-c kullanıldığında Tester sistem yapılandırmasını yok sayar (PHP'yi -n bayrağıyla
çalıştırır). Sistem yapılandırmasını da dahil etmek isterseniz -C seçeneğini ekleyin:
tester -c tests/php.ini -C tests. -c ile -C birleştirildiğinde bile, UNIX'te
/etc/php/conf.d/*.ini dizinindeki diğer INI dosyaları yüklenmez. Bu, Tester'a özgü değil PHP'nin
davranışıdır.
2.6 sürümünden önce, -c olmadan Tester PHP'yi -n bayrağıyla, yani php.ini olmadan
çalıştırıyordu; -C seçeneği bunu bastırıyordu. 2.6 sürümünden itibaren sistem php.ini dosyası
varsayılan olarak yükleniyor. -c kullanıldığındaki davranış değişmedi.