Tool
PHPUnit
The PHP unit-test runner: isolation, assertions, data providers — the first quality gate.
PHPUnit’s particularity is a process per test (or a carefully controlled kernel). That isolation is why flaky shared state shows up. Data providers keep edge cases visible. Coverage is a hint, not a trophy.
A senior tests behaviour at the right layer: domain without HTTP, application with the container, a few end-to-end paths. Mocking everything is how tests become a second implementation.
It is the default in Symfony (phpunit.xml, KernelTestCase). Without it, refactoring is superstition.