国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHPUnit實踐二(生命周期)

jemygraw / 1378人閱讀

摘要:另外,與模板方法將分別在測試用例類的第一個測試運行之前和測試用例類的最后一個測試運行之后調用。

本系列教程所有的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實踐生命周期

    摘要:另外,與模板方法將分別在測試用例類的第一個測試運行之前和測試用例類的最后一個測試運行之后調用。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit測試一個文件類的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加載機制(Lumen...

    617035918 評論0 收藏0
  • 小程序實踐):swiper組件實現輪播圖效果

    摘要:組件類似于中的,實現類似輪播圖的效果,相對于的實現起來更加方便,快捷。swiper組件類似于Android中的ViewPager,實現類似輪播圖的效果,相對于Android的Viewpager,swiper實現起來更加方便,快捷。 效果圖: 首先看下swiper支持的屬性: --------------------------------------------------------...

    番茄西紅柿 評論0 收藏0
  • PHPUnit實踐一(初識)

    摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結構的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節斷點型測試 log日志輔助測試 -> 跟蹤細節斷點型測試 ...

    weapon 評論0 收藏0
  • PHPUnit實踐一(初識)

    摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結構的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節斷點型測試 log日志輔助測試 -> 跟蹤細節斷點型測試 ...

    hss01248 評論0 收藏0
  • PHPUnit實踐三(構建模塊化的測試單元)

    摘要:本系列教程所有的測試基于版本,框架目錄結構模塊下的目錄是符合的模塊結構的如等是模塊目錄下的結構目錄如果有自己的目錄同級分配即可,如我這里的整體結構重寫過基類的測試基類,用于我們用這個基類做測試基類,后續會說明自動加載文件測試用例目錄某測試模 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 目錄結構 模塊下的目錄是符合Lumen的模塊結構的如:...

    goji 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<