I currently have a problem that I have to work around in legacy code to get our interaction with a PHP Extension to work properly (Singleton Testing Question).
As su
An alternative approach is to set a constant in the PHP section of your phpunit.xml.*:
<php>
<const name="PHPUNIT_YOURAPPLICATION_TESTSUITE" value="true"/>
</php>
In your PHP application, you might then use the following check:
if (defined('PHPUNIT_YOURAPPLICATION_TESTSUITE') && PHPUNIT_YOURAPPLICATION_TESTSUITE)
{
echo 'TestSuite running!';
}
Define a constant in your PHPUnit bootstrap.php
file. This is executed before loading or running any tests. This shouldn't impact developers running the application normally--just the unit tests.
You could check the $argv
different ways.
if(PHP_SAPI == 'cli') {
if(strpos($_SERVER['argv'][0], 'phpunit') !== FALSE) { ... }
// or
if($_SERVER['argv'][0] == '/usr/bin/phpunit') { ... }
}
If you're using Laravel than use App::runningUnitTests()
You can either define constant, but that requires your work, no typos and it's not generic. How to do it better?
PHPUnit defines 2 constants by itself:
if (! defined('PHPUNIT_COMPOSER_INSTALL') && ! defined('__PHPUNIT_PHAR__')) {
// is not PHPUnit run
return;
}
// is PHPUnit