Ensure that all children TestState are completed() (#4752) * Ensure that all children TestState are completed()
With fail fast for tests enabled, some of the `TestState`s tracked by the `StateTrackingTestResultProcessor` may never receive the `completed()` call. When this happens, the parent/ancester `TestState` will not include the test count and failure information. When combined with a `--tests` filter, this can cause an erroneous failure message that no tests matched the filter.
This change ensures that all of the children/descendents of a `testId` (`TestState`) are `completed` before the given `testId` is processed.
JUnit 5 introduces @DisplayName and dynamic tests, which allows users to customize test case and test class' name. This should be taken into account. This PR introduces `displayName` and `classDisplayName` which are used for display. When rendering HTML reports, these two fields will be used.