PHPUnit 入门案例,phpunit入门案例
PHPUnit 入门案例,phpunit入门案例
了解PHPUnit
本案例是关于创建三角形的一个单元测试入门案例,在netbeans环境中完成,关于在此环境中搭建phpunit这里不再描述,可以参考以下资料完成搭建工作:
http://www.cnblogs.com/x3d/p/phpunit-in-netbeans8.html
https://phpunit.de/manual/current/zh_cn/installation.html
https://github.com/sebastianbergmann/phpunit-skeleton-generator
原代码类:
<?php class Triangle { /** * 三条边 第一条边 * @var int */ protected $a; /** * 三条边 第二条边 * @var int */ protected $b; /** * 三条边 第三条边 * @var int */ protected $c; /** * 类型 * @var string */ protected $type; /** * 等边 */ const TYPE_EQUILATERAL = 'Equilateral'; /** * 等腰 */ const TYPE_ISOSCELES = 'Isosceles'; /** * 普通 */ const TYPE_ORDINARY = 'Ordinary'; public function __construct($a = 0, $b = 0, $c = 0) { $this->initSide($a, $b, $c); } /** * 初始化三边 * @param int $a * @param int $b * @param int $c */ protected function initSide(&$a = 0, &$b = 0, &$c = 0) { $this->a = intval($a); $this->b = intval($b); $this->c = intval($c); return $this; } /** * 组建 */ public function create($a, $b, $c) { return $this->initSide($a, $b, $c)->verifySideIsValid(); } /** * 获取类型 */ public function getType() { return $this->verifyType()->type; } /** * 验证三边是否有效 * @return boolean */ protected function verifySideIsValid() { if (intval($this->a) <= 0 || intval($this->b) <= 0 || intval($this->c) <= 0) { return false; } if ($this->a + $this->b <= $this->c) { return false; } if ($this->a + $this->c <= $this->b) { return false; } if ($this->b + $this->c <= $this->a) { return false; } if ($this->a - $this->b >= $this->c) { return false; } if ($this->a - $this->c >= $this->b) { return false; } if ($this->b - $this->c >= $this->a) { return false; } return true; } /** * 验证类型 */ protected function verifyType() { if ($this->isEquilateral()) { $this->type = self::TYPE_EQUILATERAL; return $this; } if ($this->isIsosceles()) { $this->type = self::TYPE_ISOSCELES; return $this; } $this->type = self::TYPE_ORDINARY; return $this; } /** * 是否为等边三角形 */ protected function isEquilateral() { return (($this->a == $this->b ) && ($this->b == $this->c)) ? true : false; } /** * 是否为等腰三角形 */ protected function isIsosceles() { return (($this->a == $this->b ) || ($this->b == $this->c) || ($this->a == $this->c)) ? true : false; } }
生成的测试类文件:
<?php /** * Generated by PHPUnit_SkeletonGenerator on 2016-03-13 at 19:49:12. */ class TriangleTest extends PHPUnit_Framework_TestCase { /** * @var Triangle */ protected $object; /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. */ protected function setUp() { $this->object = new Triangle; } /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. */ protected function tearDown() { } /** * @dataProvider addDataProvider * @covers Triangle::create * @todo Implement testCreate(). */ public function testCreate($a, $b, $c) { // Remove the following lines when you implement this test. /** $this->markTestIncomplete( 'This test has not been implemented yet.' ); * */ /* 实现代码 */ $this->assertTrue($this->object->create($a, $b, $c)); } /** * @covers Triangle::getType * @todo Implement testGetType(). */ public function testGetType() { // Remove the following lines when you implement this test. $this->markTestIncomplete( 'This test has not been implemented yet.' ); } /** * 测试用例 * @return array */ public function addDataProvider() { return [ [3, 4, 5], //yes [2, 2, 2], //yes [8, 10, 8], //yes [2, 3, 4], //yes [1, 2, 3], //no [5, 6, 7], //yes [8, 8, 15], //yes [0, 0, 0], //no [-10, 2, 5], //no [0, 2, 1], //no ]; } }
这里需要注意,在我们执行“创建/更新测试”后生成的测试文件类与上面会有些不同,这里的测试用例是手动加上去的,这里具体实现可以查看手册里的说明!
附执行结果:
"/usr/bin/php" "/usr/local/bin/phpunit" "--colors" "--log-junit" "/tmp/nb-phpunit-log.xml" "--bootstrap" "/var/www/html/phpunit/test/bootstrap.php" "/usr/local/netbeans-8.1/php/phpunit/NetBeansSuite.php" "--" "--run=/var/www/html/phpunit/test/core/triangleTest.php" PHPUnit 5.2.10 by Sebastian Bergmann and contributors. ....F..FFFI 11 / 11 (100%) Time: 105 ms, Memory: 10.50Mb There were 4 failures: 1) TriangleTest::testCreate with data set #4 (1, 2, 3) Failed asserting that false is true. /var/www/html/phpunit/test/core/triangleTest.php:47 2) TriangleTest::testCreate with data set #7 (0, 0, 0) Failed asserting that false is true. /var/www/html/phpunit/test/core/triangleTest.php:47 3) TriangleTest::testCreate with data set #8 (-10, 2, 5) Failed asserting that false is true. /var/www/html/phpunit/test/core/triangleTest.php:47 4) TriangleTest::testCreate with data set #9 (0, 2, 1) Failed asserting that false is true. /var/www/html/phpunit/test/core/triangleTest.php:47 FAILURES! Tests: 11, Assertions: 10, Failures: 4, Incomplete: 1. 完成。

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



In der modernen Webentwicklung wird Vue als flexibles, benutzerfreundliches und leistungsstarkes Frontend-Framework häufig bei der Entwicklung verschiedener Websites und Anwendungen eingesetzt. Bei der Entwicklung großer Projekte ist die Vereinfachung der Codekomplexität und die einfachere Wartung des Projekts ein Problem, mit dem sich jeder Entwickler auseinandersetzen muss. Die modulare Entwicklung kann uns helfen, Code besser zu organisieren, die Entwicklungseffizienz und die Lesbarkeit des Codes zu verbessern. Im Folgenden werde ich einige Erfahrungen und Richtlinien für die Implementierung der modularen Entwicklung in Vue-Großprojekten teilen: 1. Klare Arbeitsteilung in einem Großprojekt

In den letzten Jahren hat sich die Front-End-Technologie rasant weiterentwickelt und Vue.js hat als hervorragendes Front-End-Framework große Aufmerksamkeit auf sich gezogen. Mit der offiziellen Veröffentlichung von Vue.js3 und der bevorstehenden Einführung von Django4 ist die Kombination beider zur Entwicklung neuer Technologieprojekte zweifellos eine gute Lösung, die technische Engpässe überwinden und die Effizienz der Projektentwicklung verbessern kann. In diesem Artikel werden einige praktische Tipps gegeben, die Entwicklern helfen sollen, sich im Entwicklungsprozess von Vue3+Django4-Technologieprojekten besser zurechtzufinden. Zuerst müssen wir ein neues Vue3+Django4-Projekt starten,

So trennen Sie das Front-End und das Back-End von Java-Entwicklungsprojekten Mit der rasanten Entwicklung des Internets und der kontinuierlichen Verbesserung der Benutzererfahrung in Webanwendungen hat sich das Entwicklungsmodell der Trennung von Front-End und Back-End schrittweise weiterentwickelt zum Mainstream werden. In Java-Entwicklungsprojekten gibt es ein breites Anwendungsspektrum. Wie kann man also das Front-End und das Back-End von Java-Entwicklungsprojekten trennen? In diesem Artikel werden die Konzepterklärung, der Entwicklungsprozess, die Technologieauswahl, Vorteile und Herausforderungen usw. näher erläutert. 1. Konzepterklärung Die Trennung von Front-End und Back-End ist eine Entwicklungsmethode, die Benutzeroberfläche und Geschäftslogik kombiniert.

Fallen, auf die man getreten ist: Erfahrungen und Lektionen bei der Entwicklung von Sprachprojekten Auf dem Weg der Softwareentwicklung wird jeder Entwickler unweigerlich auf einige Fallstricke stoßen. Dies ist natürlich keine Ausnahme für Go-Sprachentwickler. In diesem Artikel werden die Fallstricke erläutert, auf die ich bei der Projektentwicklung mit der Go-Sprache gestoßen bin, und ich hoffe, anderen Entwicklern einige Erfahrungen und Lehren zu vermitteln. Verschiedene Versionen der Go-Sprache Wenn wir die Go-Sprache für die Projektentwicklung verwenden, müssen wir auf die Version der Go-Sprache achten. Es kann zu einigen Sprachunterschieden oder API-Änderungen zwischen verschiedenen Versionen kommen

Beherrschen Sie die Kerntechnologie: Zusammenfassung der Erfahrungen bei der Entwicklung von Go-Sprachprojekten. Mit der rasanten Entwicklung der Internetbranche sind in den letzten Jahren nacheinander verschiedene neue Programmiersprachen entstanden und zum neuen Favoriten der Entwickler geworden. Unter anderem wird die Go-Sprache als statisch kompilierte Open-Source-Sprache von vielen Entwicklern wegen ihrer Vorteile wie guter Parallelitätsleistung und hoher Ausführungseffizienz geliebt. Als Go-Sprachentwickler habe ich in mehreren Projekten geübt und einige Erfahrungen und Zusammenfassungen gesammelt. In diesem Artikel werde ich einige Kerntechnologien und Erfahrungen zur Entwicklung von Go-Sprachprojekten teilen, in der Hoffnung, dies zu tun

Als relativ neue Programmiersprache hat die Go-Sprache in den letzten Jahren in ihrer Entwicklung immer mehr Aufmerksamkeit erhalten. Insbesondere in der Projektentwicklung bietet die Go-Sprache Vorteile, da sie sich besser als andere Sprachen für die Entwicklung leistungsstarker, gleichzeitiger und verteilter Systeme eignet. Doch selbst bei der Verwendung der Go-Sprache werden Sie bei der Projektentwicklung auf Engpässe und Herausforderungen stoßen. In diesem Artikel werden wir daher einige Erfahrungen teilen, die dabei helfen, diese Engpässe zu überwinden. 1. Lernen und beherrschen Sie die Go-Sprache: Bevor Sie mit der Projektentwicklung beginnen, müssen Sie zunächst die Grundkenntnisse und Programmierkenntnisse der Go-Sprache beherrschen.

Golang-Template-Programmierpraxis: Um Vorlagen effizient zum Abschluss der Projektentwicklung in Golang zu nutzen, sind spezifische Codebeispiele erforderlich. Zusammenfassung: Mit der kontinuierlichen Weiterentwicklung von Golang im Bereich der Softwareentwicklung beginnen immer mehr Entwickler, Golang Aufmerksamkeit zu schenken und es zu verwenden für die Projektentwicklung. In Golang ist die Vorlagenprogrammierung eine sehr wichtige Technologie, die Entwicklern dabei helfen kann, die Projektentwicklung effizient abzuschließen. In diesem Artikel wird die Verwendung von Vorlagen für die Projektentwicklung in Golang vorgestellt und spezifische Codebeispiele bereitgestellt. Einleitung: Gola

Die Go-Sprache ist eine leistungsstarke, prägnante und benutzerfreundliche Programmiersprache. Immer mehr Entwickler wählen sie als bevorzugte Sprache für die Projektentwicklung. Im eigentlichen Projektentwicklungsprozess werden wir jedoch auch auf einige häufige Probleme stoßen. In diesem Artikel werden einige dieser Probleme vorgestellt und entsprechende Lösungen bereitgestellt, um Entwicklern dabei zu helfen, diese Herausforderungen besser zu bewältigen. Frage 1: Abhängigkeitsmanagement Bei der Entwicklung von Go-Sprachprojekten ist das Abhängigkeitsmanagement ein häufiges Problem. Aufgrund des modularen Charakters der Go-Sprache stützen sich Projekte oft auf viele Pakete und Bibliotheken von Drittanbietern. Und wenn
