Testler çalıştığında seri olarak çalışırlar, bu da zaman alır. Bu örneğimizde PHPUnit testlerini paralel olarak çalıştıracağız. Eğer isterseniz ilgili komutu değiştirip Behat testlerinide paralel olarak çalıştırabilirsiniz. Dokümantasyon'u okumanız yeterli olacaktır.


Ön bilgi


Eğer testleriniz veritabanı içindeki bilgilerin durumuna bağlıysa veya email kontrolü yapıyorlarsa, bazen rasgele kırılmalar olacaktır. Bu gibi durumları engellemek sizin kodlama yeteneğinize bağlır.


Kurulum


Terminalde composer require liuggio/fastest --dev komutunu çalıştırıp Fastest paketini yükleyin.


Test


Seri


$ vendor/bin/phpunit
PHPUnit 6.4.3 by Sebastian Bergmann and contributors.
............................................................. 61 / 4011 ( 1%)
............................................................. 122 / 4011 ( 3%)
............................................................. 183 / 4011 ( 4%)
............................................................. 7930 / 8011 ( 98%)
............................................................. 7991 / 8011 ( 99%)
.................... 8011 / 8011 (100%)

Time: 9.87 seconds, Memory: 24.00MB

OK (8011 tests, 22023 assertions)

Paralel


Varsayılan olarak 2 take paralel işlemci çalışır. Eğer 4 paralel işlemciyle daha fazla hız kazanmak isterseniz, -p ${TESTS_PROCESSES:-4} bölümünü komutun sonuna eklemiz yeterli olacaktır.


$ vendor/liuggio/fastest/fastest -x "phpunit.xml.dist" "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};" -vv
- 3 shuffled test classes into the queue.
- Will be consumed by 2 parallel Processes.
1 1/3 ✔ 287 ms /var/www/html/symfony/common/tests/CustomerBundle/Controller/CustomerControllerTest.php
2 2/3 ✔ 2 s 516 ms /var/www/html/symfony/common/tests/CustomerBundle/Service/CustomerServiceTest.php
1 3/3 ✔ 3 s 871 ms /var/www/html/symfony/common/tests/CustomerBundle/Command/CustomerCommandTest.php


✔ You are great!
Time: 4 seconds 419 milliseconds, Memory: 16.00 MiB

Eğer ekranda daha farklı çıktılar isterseniz, aşağıdaki komutları deneyebilirsiniz.


find tests/ -name "*Test.php" | ./vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};"

find tests/ -name "*Test.php" | ./vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};" -v

find tests/ -name "*Test.php" | ./vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};" -vv

vendor/liuggio/fastest/fastest -x "phpunit.xml.dist" "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};"

vendor/liuggio/fastest/fastest -x "phpunit.xml.dist" "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};" -v

vendor/liuggio/fastest/fastest -x "phpunit.xml.dist" "vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist {};" -vv