摘要:另外,與模板方法將分別在測試用例類的第一個測試運行之前和測試用例類的最后一個測試運行之后調用。
本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架
PHPUnit測試一個文件類的生命周期 理解PHPUnit加載機制(Lumen版)PHPUnit自動測試文件會自動加載引入(include file)
PHPUnit去啟動setUp方法,Lumen里重寫了setUp,加載了bootstrap/app.php
app.php加載了composer的autoload,借此你項目所有自動加載環境都有了,不過不包含tests目錄
至此我們引入了我們需要構建自己的自動加載類
增加tests的自動加載 我們需要給tests下的測試用例創建類似下面的結構├── BaseCase.php 重寫過Lumen基類的測試基類,用于我們用這個基類做測試基類,后續會說明 ├── bootstrap.php tests自動加載文件 ├── Cases 測試用例目錄 │?? └── Demo 測試模塊 │?? ├── logs 日志輸出目錄 │?? ?? ├── PipeTest.php PHPUnit流程測試用例 │?? ├── phpunit.xml phpunit配置文件xml │?? └── README.md 本模塊測試用例說明 ├── ExampleTest.php 最原始測試demo └── TestCase.php Lumen自帶的測試基類tests自動加載文件代碼
phpunit.xml自動加載配置bootstrap文件
流程測試代碼 TestCase.php # 代碼頭部添加 命令空間Test namespace Test;PipeTest 流程代碼assertTrue(true); } public function testTwo() { fwrite(STDOUT, __METHOD__ . " "); // 兩個交換下順序可以看下效果 // 正常執行成功assert可以繼續執行,失敗的會跳出方法 $this->assertArrayHasKey("d", ["d"=>1, "e"=>2]); $this->assertTrue(false); } public function testThree() { fwrite(STDOUT, __METHOD__ . " "); $this->assertTrue(false); } public function testFour() { fwrite(STDOUT, __METHOD__ . " "); } /** * 測試方法成功后的后置執行,tearDown之前 */ protected function assertPostConditions() { fwrite(STDOUT, __METHOD__ . " "); } public function tearDown() { fwrite(STDOUT, __METHOD__ . " "); } public static function tearDownAfterClass() { fwrite(STDOUT, __METHOD__ . " "); } /** * 不成功后攔截方法 * 必須重新拋出錯誤,如果不拋出錯誤,斷言會當成成功了 */ public function onNotSuccessfulTest(Throwable $e) { fwrite(STDOUT, __METHOD__ . " "); // 必須重新拋出錯誤,如果不拋出錯誤,斷言會當成成功了 throw $e; } }運行# 你可以把vendor/bin加入到環境變量PATH cd tests/Demo ../../../vendor/bin/phpunit運行輸出PHPUnit 6.5.9 by Sebastian Bergmann and contributors. TestCasesDemoPipeTest::setUpBeforeClass TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testOne TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown .TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testTwo TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest FTestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testThree TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest FTestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testFour TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown R 4 / 4 (100%)TestCasesDemoPipeTest::tearDownAfterClass Time: 1.29 seconds, Memory: 6.00MB There were 2 failures: 1) TestCasesDemoPipeTest::testTwo Failed asserting that false is true. /xxx/tests/Cases/Demo/PipeTest.php:47 2) TestCasesDemoPipeTest::testThree Failed asserting that false is true. /xxx/tests/Cases/Demo/PipeTest.php:53 -- There was 1 risky test: 1) TestCasesDemoPipeTest::testFour This test did not perform any assertions FAILURES! Tests: 4, Assertions: 4, Failures: 2, Risky: 1. Generating code coverage report in HTML format ... done整理流程輸出TestCasesDemoPipeTest::setUpBeforeClass TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testOne TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testTwo TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testThree TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::onNotSuccessfulTest TestCasesDemoPipeTest::setUp TestCasesDemoPipeTest::assertPreConditions TestCasesDemoPipeTest::testFour TestCasesDemoPipeTest::assertPostConditions TestCasesDemoPipeTest::tearDown TestCasesDemoPipeTest::tearDownAfterClass總結一個測試類文件,從setUpBeforeClass加載,且僅此加載一次參考
每個測試方法都會走的過程:setUp->assertPreConditions->測試方法->[assert成功執行:assertPostConditions]->tearDown->[assert執行失敗:onNotSuccessfulTest,且本方法需要拋出錯誤]
本個測試類文件執行tearDownAfterClass結束PHPUnit 6.5 官方文檔
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30053.html
摘要:另外,與模板方法將分別在測試用例類的第一個測試運行之前和測試用例類的最后一個測試運行之后調用。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit測試一個文件類的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加載機制(Lumen...
摘要:組件類似于中的,實現類似輪播圖的效果,相對于的實現起來更加方便,快捷。swiper組件類似于Android中的ViewPager,實現類似輪播圖的效果,相對于Android的Viewpager,swiper實現起來更加方便,快捷。 效果圖: 首先看下swiper支持的屬性: --------------------------------------------------------...
摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結構的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節斷點型測試 log日志輔助測試 -> 跟蹤細節斷點型測試 ...
摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結構的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節斷點型測試 log日志輔助測試 -> 跟蹤細節斷點型測試 ...
摘要:本系列教程所有的測試基于版本,框架目錄結構模塊下的目錄是符合的模塊結構的如等是模塊目錄下的結構目錄如果有自己的目錄同級分配即可,如我這里的整體結構重寫過基類的測試基類,用于我們用這個基類做測試基類,后續會說明自動加載文件測試用例目錄某測試模 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 目錄結構 模塊下的目錄是符合Lumen的模塊結構的如:...
閱讀 1179·2023-04-26 02:38
閱讀 1473·2021-11-22 09:34
閱讀 1180·2021-09-26 10:19
閱讀 3159·2019-08-29 17:15
閱讀 3515·2019-08-29 12:27
閱讀 1715·2019-08-26 13:51
閱讀 1858·2019-08-26 13:47
閱讀 1010·2019-08-26 12:20