У меня есть то, что я считаю необычной проблемой, но я постараюсь объяснить как можно яснее. Я создал простую ремесленную команду, которая делает это
/**
* Execute the console command.
*/
public function handle()
{
$this->info("==> Cleaning up reports and docs...");
$command = new Process("rm -f tests/docs/* && rm -rf test/reports/*");
$command->run();
$this->warn("==> Reports and docs are clean");
$this->info("==> Executing Tests Suite...");
$command = new Process("vendor/bin/phpunit --coverage-html tests/reports --testdox-html tests/docs/reports.html -v --debug");
$command->run();
$this->info($command->getIncrementalOutput());
$this->warn("==> report generated >> test/reports. Documentation generated >> test/docs/reports.html");
}
Это может показаться странным, но на самом деле это довольно полезно, он запускает PHPUnit с поддержкой покрытия и другими вещами. Проблема в том, что если я запущу эту команду, например php artisan ludo237:full-test
, она полностью проигнорирует phpunit.xml
, на самом деле она будет отображать ошибку, говорящую о том, что база данных MySQL не существует, хотя я установил соединение sqlite внутри моего phpunit.xml
, говоря о котором вы можете ясно видеть, что это правильно:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="APP_DEBUG" value="true"/>
<env name="APP_URL" value="http://localhost:8000"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:" />
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="MAIL_DRIVER" value="log"/>
<env name="MAIL_PRETEND" value="true"/>
</php>
</phpunit>
Я знаю, что могу просто создать псевдоним bash для этой командной строки, на самом деле это мое текущее исправление, но на данный момент мне просто любопытно понять, почему, когда я запускаю команду phpunit из команды artisan, она игнорирует XML файл.
Кто-нибудь знает об этом? Благодарю вас!