敏捷文檔

2018-02-24 15:42 更新

敏捷文檔

通常,在使用了諸如極限編程之類的敏捷流程的項目中,文檔往往無法跟上項目設計與代碼的頻繁變更。極限編程要求群體代碼所有權(collective code ownership),因此所有開發(fā)者都需要知道整個系統(tǒng)是如何工作的。如果你足夠訓練有素,為測試使用了“能說明問題的名稱(speaking names)”來描述各個類應當干什么,那么就可以用 PHPUnit 的 TestDox 功能來基于項目的測試生成項目的自動文檔。這個文檔能夠就項目中的各個類應當起什么作用給開發(fā)者一份概述。

PHPUnit 的 TestDox 功能著眼于測試類及其所有測試方法的名稱,將它們駝峰式大小寫(camel case)拼寫的 PHP 名稱轉換為句子:testBalanceIsInitiallyZero() 轉化為 "Balance is initially zero(初始結余為零)"。如果有多個測試方法的名字互相之間的差異只是一個或多個數(shù)字的后綴,例如 testBalanceCannotBecomeNegative()testBalanceCannotBecomeNegative2(),假如所有這些測試都成功,句子"Balance cannot become negative(結余不能變?yōu)樨摂?shù))"只會出現(xiàn)一次。

來看一下從 BankAccount 類生成的敏捷文檔:

phpunit --testdox BankAccountTest

PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

BankAccount
 [x] Balance is initially zero
 [x] Balance cannot become negative

另外,敏捷文檔也可以以 HTML 或純文本格式生成,并寫入文件中,用 --testdox-html--testdox-text 參數(shù)即可。

敏捷文檔可以用于將對項目所使用的外部包所做出的假設文檔化。使用外部包,你就暴露于這個包的行為與你所預期的不同的風險中,并且包的未來版本可能在你所不知道的情況下有微妙的改變并破壞你的代碼。每次做出假設時就編寫一個對應的測試可以處理這些風險。如果測試成功,那么假設就有效。如果所有的假設都通過測試來文檔化,外部包在未來發(fā)布新版本就不會引起憂慮:如果測試成功,那么系統(tǒng)就應當能繼續(xù)正常運作。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號