Ç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çti
  • s – 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ılmaz
  • console-lines: konsola benzer, ancak her testin sonucu daha fazla bilgi ile ayrı bir satırda listelenir
  • tap: Makine işlemesi için uygun TAP formatı
  • junit: JUnit XML formatı, makine işlemesi için de uygun
  • log: Test ilerlemesini çıktılar. Tüm başarısız, atlanmış ve ayrıca başarılı testler
  • none: 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:

  1. PCOV
  2. PHPDBG
  3. 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.