The standard PHPUnit assertion methods such as assertEquals, expect the first argument to be the expected value and the second argument to be the actual value. Swap them, and your test will still have the same outcome (succeed/fail when it should) but the error messages will be confusing.

This rule raises an issue when the second argument to an assertions library method is a hard-coded value and the first argument is not.

Noncompliant Code Example

self::assertEquals($runner.getExitCode(), 0, "Unexpected exit code"); // Noncompliant; Failed asserting that 0 matches expected 3. Expected :3 Actual :0.

Compliant Solution

self::assertEquals(0, $runner.getExitCode(), "Unexpected exit code");