Ich lerne, wie man einen Unit Test mit PHPUnit 4.3.5 / PHP 5.5.14 durchführt. Alles ging gut, bis ich versuchte, meine Code-Abdeckung zu bekommen. Ich erhalte diesen Fehler: "Versuchen, @cover oder @use nicht vorhandene Methode" MyClass :: __ construct "beim Versuch, Code-Abdeckung zu bekommen. Ich versuchte andere SO Antworten, konnte aber nicht beheben. Irgendwelche Ideen was mache ich falsch Danke!
%Vor% Wenn Ihre Klasse die Methode __construct
implementiert, liegt das Problem darin, dass die Klasse selbst nicht gefunden wird. Starten Sie das Entfernen der @covers Annotation und überprüfen Sie, ob die Klasse geladen werden kann. Zum Beispiel versuchen Sie: var_dump(class_exists('MyClass'));
innerhalb des Tests (vor der Behauptung, die ich vermute, wird nicht bestanden).
In Annotationen und allgemein bei der Übergabe Ihres Klassennamens als String sollten Sie immer auf die Klasse verweisen, indem Sie ihren vollständigen Namen mit dem Namen verwenden:
%Vor% Sie können denselben Fehler erhalten, wenn Sie erwarten, dass die Annotation @covers
mit dem Namespace use operator arbeitet.
Der folgende Code funktioniert nicht:
%Vor% Intelligente IDEs wie PHPStorm lösen die Annotation ClassToTest::someMethod()
, wenn Sie STRG + klicken, aber PHPUnit gibt Ihnen einen Trying to @cover or @use not existing method "ClassToTest::someMethod".
Fehler.
Hier gibt es einen Pull-Request: Ссылка
Als Umgehung verwenden Sie einfach den vollständigen Klassennamen:
%Vor%Tags und Links unit-testing php phpunit