xml = new SimpleXMLElement( file_get_contents( $testListFile ) ); } /** * @return TestDescriptor[] A list of TestDescriptor objects representing the * test classes found in the `--list-tests` XML * output */ public function getTestClasses(): array { if ( !property_exists( $this->xml, "testCaseClass" ) ) { return []; } return array_map( fn ( $element ) => self::extractNamespace( (string)$element->attributes()["name"] ), iterator_to_array( $this->xml->testCaseClass, false ) ); } private static function extractNamespace( string $qualifiedClassName ): TestDescriptor { $parts = explode( '\\', $qualifiedClassName ); $className = array_pop( $parts ); return new TestDescriptor( $className, $parts ); } }