Unit-тесты должны быть изолированы. То есть тесты должны проходить если выполнять из по-одному или если включить в PHPUnit режим выполнения в случайном порядке через phpunit.xml.dist
:
<phpunit executionOrder="default">
Для этого, если тест работает с окружением (например, с файловой системой), окружение нужно подчищать. Причём подчищать и до и после через setUp()
и tearDown()
:
final class MyTest extends PHPUnit\Framework\TestCase
{
public function setUp(): void
{
$this->cleanup();
$path = realpath(sys_get_temp_dir());
mkdir($path, 755);
}
public function tearDown(): void
{
$this->cleanup();
}
private function cleanup(): void
{
$path = realpath(sys_get_temp_dir());
rmdir($path)
}
Зачистка делается два раза и до и после потому как если какой-то тест упадёт, зачистка в tearDown()
не выполнится и окружение "встанет".