Captured from a real `junit-platform-console-standalone --details=tree` run against MixedAssertionsAntiPatternTest, compiled and executed for real. ╷ ├─ JUnit Platform Suite ✔ ├─ JUnit Jupiter ✔ │ └─ MixedAssertionsAntiPatternTest ✔ │ ├─ adminShouldDelete(Role) ✔ │ │ └─ [1] ADMIN ✔ │ ├─ testPermissions(String, boolean, boolean) ✔ │ │ ├─ [1] "ADMIN", "true", "true" ✔ │ │ └─ [2] "GUEST", "false", "true" ✔ │ └─ allRolesShouldRead(Role) ✔ │ ├─ [1] ADMIN ✔ │ ├─ [2] SUPERUSER ✔ │ ├─ [3] EDITOR ✔ │ ├─ [4] USER ✔ │ └─ [5] GUEST ✔ └─ JUnit Vintage ✔ Test run finished after 246 ms [ 8 tests successful ] [ 0 tests failed ] testPermissions is the BAD example: one parameterized test asserting two unrelated behaviors (canDelete and canRead) per row, so a failure in either one just says "testPermissions failed" without telling you which behavior broke. It passes here -- this is a design-smell illustration, not a test that's expected to fail -- but a reader who only sees it pass has no way to tell canDelete and canRead apart from the test name alone. adminShouldDelete and allRolesShouldRead are the fix: the same two behaviors, split into two single-assertion parameterized tests, each with a display name that says exactly what broke if it ever does.