摘要:另外,與模板方法將分別在測(cè)試用例類(lèi)的第一個(gè)測(cè)試運(yùn)行之前和測(cè)試用例類(lèi)的最后一個(gè)測(cè)試運(yùn)行之后調(diào)用。
本系列教程所有的PHPUnit測(cè)試基于PHPUnit6.5.9版本,Lumen 5.5框架
PHPUnit測(cè)試一個(gè)文件類(lèi)的生命周期 理解PHPUnit加載機(jī)制(Lumen版)PHPUnit自動(dòng)測(cè)試文件會(huì)自動(dòng)加載引入(include file)
PHPUnit去啟動(dòng)setUp方法,Lumen里重寫(xiě)了setUp,加載了bootstrap/app.php
app.php加載了composer的autoload,借此你項(xiàng)目所有自動(dòng)加載環(huán)境都有了,不過(guò)不包含tests目錄
至此我們引入了我們需要構(gòu)建自己的自動(dòng)加載類(lèi)
增加tests的自動(dòng)加載 我們需要給tests下的測(cè)試用例創(chuàng)建類(lèi)似下面的結(jié)構(gòu)├── BaseCase.php 重寫(xiě)過(guò)Lumen基類(lèi)的測(cè)試基類(lèi),用于我們用這個(gè)基類(lèi)做測(cè)試基類(lèi),后續(xù)會(huì)說(shuō)明 ├── bootstrap.php tests自動(dòng)加載文件 ├── Cases 測(cè)試用例目錄 │?? └── Demo 測(cè)試模塊 │?? ├── logs 日志輸出目錄 │?? ?? ├── PipeTest.php PHPUnit流程測(cè)試用例 │?? ├── phpunit.xml phpunit配置文件xml │?? └── README.md 本模塊測(cè)試用例說(shuō)明 ├── ExampleTest.php 最原始測(cè)試demo └── TestCase.php Lumen自帶的測(cè)試基類(lèi)tests自動(dòng)加載文件代碼
phpunit.xml自動(dòng)加載配置bootstrap文件
流程測(cè)試代碼 TestCase.php # 代碼頭部添加 命令空間Test namespace Test;PipeTest 流程代碼assertTrue(true); } public function testTwo() { fwrite(STDOUT, __METHOD__ . " "); // 兩個(gè)交換下順序可以看下效果 // 正常執(zhí)行成功assert可以繼續(xù)執(zhí)行,失敗的會(huì)跳出方法 $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__ . " "); } /** * 測(cè)試方法成功后的后置執(zhí)行,tearDown之前 */ protected function assertPostConditions() { fwrite(STDOUT, __METHOD__ . " "); } public function tearDown() { fwrite(STDOUT, __METHOD__ . " "); } public static function tearDownAfterClass() { fwrite(STDOUT, __METHOD__ . " "); } /** * 不成功后攔截方法 * 必須重新拋出錯(cuò)誤,如果不拋出錯(cuò)誤,斷言會(huì)當(dāng)成成功了 */ public function onNotSuccessfulTest(Throwable $e) { fwrite(STDOUT, __METHOD__ . " "); // 必須重新拋出錯(cuò)誤,如果不拋出錯(cuò)誤,斷言會(huì)當(dāng)成成功了 throw $e; } }運(yùn)行# 你可以把vendor/bin加入到環(huán)境變量PATH cd tests/Demo ../../../vendor/bin/phpunit運(yùn)行輸出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總結(jié)一個(gè)測(cè)試類(lèi)文件,從setUpBeforeClass加載,且僅此加載一次參考
每個(gè)測(cè)試方法都會(huì)走的過(guò)程:setUp->assertPreConditions->測(cè)試方法->[assert成功執(zhí)行:assertPostConditions]->tearDown->[assert執(zhí)行失敗:onNotSuccessfulTest,且本方法需要拋出錯(cuò)誤]
本個(gè)測(cè)試類(lèi)文件執(zhí)行tearDownAfterClass結(jié)束PHPUnit 6.5 官方文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/8900.html
摘要:另外,與模板方法將分別在測(cè)試用例類(lèi)的第一個(gè)測(cè)試運(yùn)行之前和測(cè)試用例類(lèi)的最后一個(gè)測(cè)試運(yùn)行之后調(diào)用。 本系列教程所有的PHPUnit測(cè)試基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit測(cè)試一個(gè)文件類(lèi)的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加載機(jī)制(Lumen...
摘要:組件類(lèi)似于中的,實(shí)現(xiàn)類(lèi)似輪播圖的效果,相對(duì)于的實(shí)現(xiàn)起來(lái)更加方便,快捷。swiper組件類(lèi)似于Android中的ViewPager,實(shí)現(xiàn)類(lèi)似輪播圖的效果,相對(duì)于Android的Viewpager,swiper實(shí)現(xiàn)起來(lái)更加方便,快捷。 效果圖: 首先看下swiper支持的屬性: --------------------------------------------------------...
摘要:另外一些單元測(cè)試可能會(huì)測(cè)試負(fù)向路徑的場(chǎng)景,保證代碼不僅會(huì)產(chǎn)生錯(cuò)誤,而且是預(yù)期的錯(cuò)誤。是一個(gè)面向程序員的測(cè)試框架,這是一個(gè)的體系結(jié)構(gòu)的單元測(cè)試框架。 本系列教程所有的PHPUnit測(cè)試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測(cè)試: 代碼直接echo,debug等方法測(cè)試 -> 跟蹤細(xì)節(jié)斷點(diǎn)型測(cè)試 log日志輔助測(cè)試 -> 跟蹤細(xì)節(jié)斷點(diǎn)型測(cè)試 ...
摘要:另外一些單元測(cè)試可能會(huì)測(cè)試負(fù)向路徑的場(chǎng)景,保證代碼不僅會(huì)產(chǎn)生錯(cuò)誤,而且是預(yù)期的錯(cuò)誤。是一個(gè)面向程序員的測(cè)試框架,這是一個(gè)的體系結(jié)構(gòu)的單元測(cè)試框架。 本系列教程所有的PHPUnit測(cè)試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測(cè)試: 代碼直接echo,debug等方法測(cè)試 -> 跟蹤細(xì)節(jié)斷點(diǎn)型測(cè)試 log日志輔助測(cè)試 -> 跟蹤細(xì)節(jié)斷點(diǎn)型測(cè)試 ...
摘要:本系列教程所有的測(cè)試基于版本,框架目錄結(jié)構(gòu)模塊下的目錄是符合的模塊結(jié)構(gòu)的如等是模塊目錄下的結(jié)構(gòu)目錄如果有自己的目錄同級(jí)分配即可,如我這里的整體結(jié)構(gòu)重寫(xiě)過(guò)基類(lèi)的測(cè)試基類(lèi),用于我們用這個(gè)基類(lèi)做測(cè)試基類(lèi),后續(xù)會(huì)說(shuō)明自動(dòng)加載文件測(cè)試用例目錄某測(cè)試模 本系列教程所有的PHPUnit測(cè)試基于PHPUnit6.5.9版本,Lumen 5.5框架 目錄結(jié)構(gòu) 模塊下的目錄是符合Lumen的模塊結(jié)構(gòu)的如:...
閱讀 3252·2021-10-21 17:50
閱讀 3262·2021-10-08 10:05
閱讀 3393·2021-09-22 15:04
閱讀 589·2019-08-30 14:00
閱讀 1949·2019-08-29 17:01
閱讀 1515·2019-08-29 15:16
閱讀 3225·2019-08-26 13:25
閱讀 858·2019-08-26 11:44