iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
1

我們可以利用 測試框架 來幫助我們編寫測試,減少重複的程式碼,以及豐富的 Assertion 函式可以在不同狀況下使用。

雖然常用程式語言的原生語法中,大概都有用來做單元測試的Assertion語法,但大概很簡陋,需要有豐富或細緻的功能的話,就需要自己動手下去刻。

每個語言可能都有複數的測試框架可以使用,PHP 最廣泛使用之一是PHPUnit,Python 的pytest功能強大、原生內建也有 unittest,還沒鑽研過 Java 但也聽過有名的 JUnit

接著讓我們來介紹 PHPUnit 的使用吧。


安裝

從安裝開始說起,我們利用套件管理系統 Composer 來安裝 PHPUnit,這邊只說明在我在 MacOS 上的方式。

安裝 Composer

現在已經可以直接透過 Homebrew 來安裝 Composer。

$ brew install composer

安裝 PHPUnit

在 Terminal 進到專案的資料夾後,

$ composer require --dev phpunit/phpunit

會在目前位置建立兩個檔案及一個資料夾,composer.json紀錄著想要安裝的套件及其他更多 Composer 設定,composer.lock紀錄所有安裝及相依套件目前的版本,一個資料夾vendor/存放著安裝的套件以及許多神秘的小精靈。

require 代表要這個套件,--dev表示這個套件只在開發階段需要用到,phpunit/phpunit前者代表上架者/公司的名字,後者才是套件名稱。

PHPUnit 基礎使用介紹

此時已安裝完 PHPUnit,不過要注意是只在目前的專案資料夾內,跟用 Homebrew 安裝 Composer 不一樣,並不是全域地安裝在整台電腦。

我們會將測試都放在tests/裡,主程式放在src/,在資料夾的結構上把他們獨立出來比較不容易混淆。

所以現在專案資料夾看起來長這樣:
├── composer.json
├── composer.lock
├── src
├── tests
└── vendor
       ├── autoload.php
       ├── ...

利用 PHPUnit 的指令執行測試,

$ ./vendor/bin/phpunit tests

意思是對tests/資料夾搜尋所有符合測試命名規則的類別函式,符合以下規則的函式才會被執行,包含大小寫:

  • 檔案命名為 xxxTest.php
  • 繼承了 PHPUnit\Framework\TestCase
  • 類別的成員函式命名為 testxxxx

由於目前還沒有寫任何測試,印出了

PHPUnit 8.3.5 by Sebastian Bergmann and contributors.
Time: 54 ms, Memory: 4.00 MB
No tests executed!

基礎的用法說完,剩下的細節就在範例中來說明吧!


上一篇
TDD 範例二:物件 (PHP)
下一篇
TDD 範例三:用 PHPUnit 改寫範例二
系列文
如何一步步實踐TDD (測試驅動開發)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言