はじめに

ローカル環境でのテストでSQLiteを使っていたけど、PostgreSQL固有の機能を使用した実装を行った場合はSQLiteではテストできなくなるのでPostgreSQLに変更したところ、今まで通ってたテストが通らなくなる場合があります。ファイル単体のテストでは通るのに、ファイル指定をせずに一括で行った場合にエラーになるといった現象となります。

対策

対策1

phpunit.xmlのprocessIsolationをtrueにする

processIsolation="true"

対策1を行った後に全体のテストを行うと、以下のエラーとなったケースがあります。

$ vendor/bin/phpunit
PHPUnit 9.5.25 #StandWithUkraine

Warning:       Your XML configuration validates against a deprecated schema.
Suggestion:    Migrate your XML configuration using "--migrate-configuration"!

EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE   61 / 1757 (  3%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE  122 / 1757 (  6%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE  183 / 1757 ( 10%)
省略
EEEEEEEESerialization of 'Illuminate\Http\Testing\File' is not allowed

対策2

phpunit.xmlのbackupStaticAttributesをtrueにする(その場合、processIsolationはfalseで良い)

backupStaticAttributes="true"