


Funktionsanalyse privater Eigenschaften und Methoden für PHPUnit-Tests
In diesem Artikel werden hauptsächlich die Funktionen von PHPUnit zum Testen privater Eigenschaften und Methoden vorgestellt. Außerdem werden die relevanten Betriebstechniken und Vorsichtsmaßnahmen für die Verwendung von PHPUnit zum Testen privater Eigenschaften und Methoden in Form von Beispielen detailliert analysiert it
Das Beispiel in diesem Artikel beschreibt das PHPUnit-Testen privater Eigenschaften und Methodenfunktionen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
1. Private Methoden in der Testklasse:
class Sample { private $a = 0; private function run() { echo $a; } }
Das Obige schreibt einfach eine Klasse, die eine private Variable und eine private Methode enthält. Da geschützte und private Methoden nicht direkt wie öffentliche Methoden aufgerufen werden können, ist die Verwendung von phpunit für Einzeltests sehr unpraktisch, insbesondere wenn eine Klasse nur wenige Schnittstellen zur Außenwelt bereitstellt und eine große Anzahl privater Methoden verwendet intern. Situation.
Für geschützte Methoden wird empfohlen, die Vererbung zum Testen zu verwenden, daher werde ich hier nicht auf Details eingehen. Zum Testen privater Methoden wird empfohlen, den Reflexionsmechanismus von PHP zu verwenden. Hier ist ohne weiteres der Code:
class testSample() { $method = new ReflectionMethod('Sample', 'run'); $method->setAccessible(true); //将run方法从private变成类似于public的权限 $method->invoke(new Sample()); //调用run方法 }
Wenn die Ausführungsmethode statisch ist, wie zum Beispiel:
private static function run() { echo 'run is a private static function'; }
Dann kann die Aufruffunktion auch so geschrieben werden:
$method->invoke(null); //只有静态方法可以不必传类的实例化
Wenn run auch Parameter übergeben muss, zum Beispiel:
private function run($x, $y) { return $x + $y; }
Dann kann der Testcode geändert werden in:
$method->invokeArgs(new Sample(), array(1, 2)); //array中依次写入要传的参数。执行结果返回3
[Hinweis ]: Verwenden Sie Reflection, um Private zu testen. Obwohl die Methode gut ist, wird die setAccessible-Funktion erst nach PHP5.3.2 (>=5.3.2) unterstützt.
2. Private abrufen/festlegen Attribute
Nachdem wir über private Methoden gesprochen haben, werfen wir einen Blick auf private Attribute. Nehmen wir immer noch die Sample-Klasse als Beispiel, wenn Sie den Wert des privaten Attributs $ abrufen oder festlegen möchten a in der Sample-Klasse können Sie die folgende Methode verwenden:
public function testPrivateProperty() { $reflectedClass = new ReflectionClass('Sample'); $reflectedProperty = $reflectedClass->getProperty('a'); $reflectedProperty->setAccessible(true); $reflectedProperty->getValue(); //获取$a的值 $reflectedProperty->setValue(123); //给$a赋值:$a = 123; }
Die obige Methode ist weiterhin für statische Attribute gültig.
An diesem Punkt hat man das Gefühl, dass das Testen privater Methoden oder Eigenschaften sofort einfach geworden ist.
Anhang: PHPunit testet private Methoden (englisches Original)
Dieser Artikel ist Teil einer Serie zum Testen von nicht testbarem Code:
Private Methoden testen
Code testen, der Singletons verwendet
Statische Methoden stubbing
Stubbing hartcodierter Abhängigkeiten
Nein, nicht diese privaten Abhängigkeiten. Wenn Sie dabei Hilfe benötigen, könnte dieses Buch hilfreich sein.
Eine Frage, die ich bekomme Immer wieder, wenn es um Unit-Tests geht, lautet:
„Wie teste ich die privaten Attribute und Methoden meiner Objekte?“
Nehmen wir an, wir haben ein Klasse Foo:
<?php class Foo { private $bar = 'baz'; public function doSomething() { return $this->bar = $this->doSomethingPrivate(); } private function doSomethingPrivate() { return 'blah'; } } ?>
Bevor wir untersuchen, wie geschützte und private Attribute und Methoden direkt getestet werden können, werfen wir einen Blick darauf, wie sie getestet werden können indirekt.
Der folgende Test ruft die testDoSomething()-Methode auf, die wiederum die doSomethingPrivate()-Methode aufruft:
<?php class FooTest extends PHPUnit_Framework_TestCase { /** * @covers Foo::doSomething * @covers Foo::doSomethingPrivate */ public function testDoSomething() { $foo = new Foo; $this->assertEquals('blah', $foo->doSomething()); } } ?>
Der obige Test geht davon aus testDoSomething() funktioniert nur dann korrekt, wenn testDoSomethingPrivate() korrekt funktioniert. Das Problem bei diesem Ansatz besteht darin, dass wir nicht direkt wissen, wo die Grundursache für den Fehler liegen könnte entweder in testDoSomething() oder testDoSomethingPrivate(). Dies macht den Test weniger wertvoll.
PHPUnit unterstützt das Lesen geschützter und privater Attribute über die Methode PHPUnit_Framework_Assert::readAttribute().
<?php class FooTest extends PHPUnit_Framework_TestCase { public function testPrivateAttribute() { $this->assertAttributeEquals( 'baz', /* expected value */ 'bar', /* attribute name */ new Foo /* object */ ); } } ?>
PHP 5.3.2 führt die Methode ReflectionMethod::setAccessible() ein, um den Aufruf geschützter und privater Methoden über die Reflection-API zu ermöglichen:
<?php class FooTest extends PHPUnit_Framework_TestCase { /** * @covers Foo::doSomethingPrivate */ public function testPrivateMethod() { $method = new ReflectionMethod( 'Foo', 'doSomethingPrivate' ); $method->setAccessible(TRUE); $this->assertEquals( 'blah', $method->invoke(new Foo) ); } } ?>
Im obigen Test testen wir testDoSomethingPrivate() direkt. Wenn es fehlschlägt, wissen wir sofort, wo wir nach der Grundursache suchen müssen.
Ich stimme Dave Thomas und Andy Hunt zu, die in ihrem Buch „Pragmatic Unit Testing“ schreiben:
Verwandte Empfehlungen:„Im Allgemeinen möchte man zum Testen keine Kapselung aufbrechen (oder wie Mama immer sagte: „Tu es nicht.“ Legen Sie Ihre privaten Daten offen!“) In den meisten Fällen sollten Sie in der Lage sein, eine Klasse zu testen, indem Sie ihre öffentlichen Methoden ausführen. Wenn sich hinter privatem oder geschütztem Zugriff eine wichtige Funktionalität verbirgt, kann dies ein Warnsignal dafür sein, dass es eine andere Klasse gibt Da drin kämpft es darum, rauszukommen
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Analyse des von PHP und Redis implementierten pessimistischen Sperrmechanismus
Zusammenfassung der Verwendung variabler Funktionen in PHP
Das obige ist der detaillierte Inhalt vonFunktionsanalyse privater Eigenschaften und Methoden für PHPUnit-Tests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Tomato Novel ist eine sehr beliebte Roman-Lesesoftware. Jeder Roman und Comic ist sehr interessant und möchte auch Romane schreiben Also, wie schreiben wir den Roman darin? Meine Freunde wissen es nicht, also lasst uns gemeinsam auf diese Seite gehen und uns eine Einführung zum Schreiben eines Romans ansehen. Teilen Sie das Tomato-Roman-Tutorial zum Schreiben eines Romans. 1. Öffnen Sie zunächst die kostenlose Tomato-Roman-App auf Ihrem Mobiltelefon und klicken Sie auf „Personal Center – Writer Center“. 2. Gehen Sie zur Seite „Tomato Writer Assistant“ – klicken Sie auf „Neues Buch erstellen“. am Ende des Romans.

Colorful-Motherboards erfreuen sich auf dem chinesischen Inlandsmarkt großer Beliebtheit und Marktanteil, aber einige Benutzer von Colorful-Motherboards wissen immer noch nicht, wie sie im BIOS Einstellungen vornehmen sollen? Als Reaktion auf diese Situation hat Ihnen der Herausgeber speziell zwei Methoden zum Aufrufen des farbenfrohen Motherboard-BIOS vorgestellt. Kommen Sie und probieren Sie es aus! Methode 1: Verwenden Sie die U-Disk-Start-Tastenkombination, um das U-Disk-Installationssystem direkt aufzurufen. Die Tastenkombination für das Colorful-Motherboard zum Starten der U-Disk ist zunächst ESC oder F11, um ein Black zu erstellen Wenn Sie den Startbildschirm sehen, drücken Sie kontinuierlich die ESC- oder F11-Taste auf der Tastatur, um ein Fenster zur Auswahl der Startelementsequenz aufzurufen. Bewegen Sie den Cursor an die Stelle, an der „USB“ angezeigt wird " wird angezeigt, und dann

Leider löschen Menschen aus bestimmten Gründen oft versehentlich bestimmte Kontakte. WeChat ist eine weit verbreitete soziale Software. Um Benutzern bei der Lösung dieses Problems zu helfen, wird in diesem Artikel erläutert, wie gelöschte Kontakte auf einfache Weise wiederhergestellt werden können. 1. Verstehen Sie den WeChat-Kontaktlöschmechanismus. Dies bietet uns die Möglichkeit, gelöschte Kontakte wiederherzustellen. Der Kontaktlöschmechanismus in WeChat entfernt sie aus dem Adressbuch, löscht sie jedoch nicht vollständig. 2. Nutzen Sie die integrierte „Kontaktbuch-Wiederherstellung“-Funktion von WeChat, um Zeit und Energie zu sparen. Mit dieser Funktion können Benutzer schnell gelöschte Kontakte wiederherstellen. 3. Rufen Sie die WeChat-Einstellungsseite auf und klicken Sie auf die untere rechte Ecke, öffnen Sie die WeChat-Anwendung „Me“ und klicken Sie auf das Einstellungssymbol in der oberen rechten Ecke, um die Einstellungsseite aufzurufen.

Was halten Sie von Furmark? 1. Stellen Sie den „Ausführungsmodus“ und den „Anzeigemodus“ in der Hauptoberfläche ein, passen Sie auch den „Testmodus“ an und klicken Sie auf die Schaltfläche „Start“. 2. Nach einer Weile sehen Sie die Testergebnisse, darunter verschiedene Parameter der Grafikkarte. Wie wird Furmark qualifiziert? 1. Verwenden Sie eine Furmark-Backmaschine und überprüfen Sie das Ergebnis etwa eine halbe Stunde lang. Die Temperatur liegt im Wesentlichen bei etwa 85 Grad, mit einem Spitzenwert von 87 Grad und einer Raumtemperatur von 19 Grad. Großes Gehäuse, 5 Gehäuselüfteranschlüsse, zwei vorne, zwei oben und einer hinten, aber nur ein Lüfter ist installiert. Sämtliches Zubehör ist nicht übertaktet. 2. Unter normalen Umständen sollte die normale Temperatur der Grafikkarte zwischen „30-85℃“ liegen. 3. Auch wenn die Umgebungstemperatur im Sommer zu hoch ist, beträgt die normale Temperatur „50-85℃“

Mobile Spiele sind mit der Entwicklung der Technologie zu einem festen Bestandteil des Lebens der Menschen geworden. Mit seinem niedlichen Drachenei-Bild und dem interessanten Schlüpfvorgang hat es die Aufmerksamkeit vieler Spieler auf sich gezogen, und eines der Spiele, das viel Aufmerksamkeit erregt hat, ist die mobile Version von Dragon Egg. Um den Spielern dabei zu helfen, ihre eigenen Drachen im Spiel besser zu kultivieren und zu züchten, erfahren Sie in diesem Artikel, wie Sie Dracheneier in der mobilen Version ausbrüten. 1. Wählen Sie den geeigneten Drachenei-Typ aus, der Ihnen gefällt und zu Ihnen passt, basierend auf den verschiedenen Arten von Drachenei-Attributen und -Fähigkeiten, die im Spiel zur Verfügung stehen. 2. Verbessern Sie die Stufe der Brutmaschine, indem Sie Aufgaben erledigen und Requisiten sammeln. Die Stufe der Brutmaschine bestimmt die Schlüpfgeschwindigkeit und die Erfolgsquote beim Schlüpfen. 3. Sammeln Sie die Ressourcen, die die Spieler zum Schlüpfen benötigen

Das Festlegen der Schriftgröße ist zu einer wichtigen Personalisierungsanforderung geworden, da Mobiltelefone zu einem wichtigen Werkzeug im täglichen Leben der Menschen geworden sind. Um den Bedürfnissen verschiedener Benutzer gerecht zu werden, wird in diesem Artikel erläutert, wie Sie das Nutzungserlebnis Ihres Mobiltelefons verbessern und die Schriftgröße des Mobiltelefons durch einfache Vorgänge anpassen können. Warum müssen Sie die Schriftgröße Ihres Mobiltelefons anpassen? Durch Anpassen der Schriftgröße kann der Text klarer und leichter lesbar werden. Geeignet für die Lesebedürfnisse von Benutzern unterschiedlichen Alters. Praktisch für Benutzer mit Sehbehinderung, die Schriftgröße zu verwenden Einstellungsfunktion des Mobiltelefonsystems – So rufen Sie die Systemeinstellungsoberfläche auf – Suchen und geben Sie die Option „Anzeige“ in der Einstellungsoberfläche ein – suchen Sie die Option „Schriftgröße“ und passen Sie sie mit einem Drittanbieter an Anwendung – Laden Sie eine Anwendung herunter und installieren Sie sie, die die Anpassung der Schriftgröße unterstützt – öffnen Sie die Anwendung und rufen Sie die entsprechende Einstellungsoberfläche auf – je nach Person

In der heutigen Gesellschaft sind Mobiltelefone zu einem unverzichtbaren Bestandteil unseres Lebens geworden. Als wichtiges Werkzeug für unsere tägliche Kommunikation, Arbeit und unser Leben wird WeChat häufig genutzt. Allerdings kann es bei der Abwicklung unterschiedlicher Transaktionen erforderlich sein, zwei WeChat-Konten zu trennen, was erfordert, dass das Mobiltelefon die gleichzeitige Anmeldung bei zwei WeChat-Konten unterstützt. Als bekannte inländische Marke werden Huawei-Mobiltelefone von vielen Menschen genutzt. Wie können also zwei WeChat-Konten auf Huawei-Mobiltelefonen eröffnet werden? Lassen Sie uns das Geheimnis dieser Methode lüften. Zunächst müssen Sie zwei WeChat-Konten gleichzeitig auf Ihrem Huawei-Mobiltelefon verwenden. Der einfachste Weg ist

Der „Inaction Test“ des neuen Fantasy-Märchen-MMORPG „Zhu Xian 2“ startet am 23. April. Was für eine neue Märchen-Abenteuergeschichte wird auf dem Kontinent Zhu Die Six Realm Immortal World, eine Vollzeitakademie zur Kultivierung von Unsterblichen, ein freies Leben zur Kultivierung von Unsterblichen und jede Menge Spaß in der Welt der Unsterblichen warten darauf, von den unsterblichen Freunden persönlich erkundet zu werden! Der Vorab-Download von „Wuwei Test“ ist jetzt möglich. Sie können sich zum Herunterladen auf die offizielle Website begeben. Der Aktivierungscode kann nach dem Vorab-Download und der Installation verwendet werden abgeschlossen. „Zhu Als Blaupause wird der Spielhintergrund festgelegt
