PHPUnit 的各個(gè)斷言是在 ?PHPUnit\Framework\Assert
? 中實(shí)現(xiàn)的。?PHPUnit\Framework\TestCase
? 則繼承于 ?PHPUnit\Framework\Assert
?。
各個(gè)斷言方法均聲明為 ?static
?,可以從任何上下文以類似于 ?PHPUnit\Framework\Assert::assertTrue()
? 的方式調(diào)用,或者也可以用類似于 ?$this->assertTrue()
? 或 ?self::assertTrue()
? 的方式在擴(kuò)展自 ?PHPUnit\Framework\TestCase
? 的類內(nèi)調(diào)用。甚至可以用全局函數(shù)封裝,例如 ?assertTrue()
?。
有個(gè)常見的疑問——對(duì)于那些 PHPUnit 的新手尤甚——是究竟應(yīng)該用諸如 ?$this->assertTrue()
? 還是諸如 ?self::assertTrue()
? 這樣的形式來調(diào)用斷言才是“正確的方式”?簡而言之:沒有正確方式。同時(shí),也沒有錯(cuò)誤方式。這基本上是個(gè)人喜好問題。
對(duì)于大多數(shù)人而言,由于測試方法是在測試對(duì)象上調(diào)用,因此用 ?$this->assertTrue()
? 會(huì)“覺的更正確”。然而請記住斷言方法是聲明為 ?static
? 的,這使其可以(重)用于測試對(duì)象的作用域之外。最后,全局函數(shù)封裝讓開發(fā)者能再少打一些字(用 ?assertTrue()
? 代替 ?$this->assertTrue()
? 或者 ?self::assertTrue()
?)。
更多建議: