我已經研究了Zend框架的PHPUnit的一些例子,但有一部分我不理解。PHPUnit與Zend框架
在大多數示例中,應用程序引導從 ,setUp()
方法中的某種baseClass運行。
爲什麼不在__construct()
?有沒有什麼好的理由?
我已經研究了Zend框架的PHPUnit的一些例子,但有一部分我不理解。PHPUnit與Zend框架
在大多數示例中,應用程序引導從 ,setUp()
方法中的某種baseClass運行。
爲什麼不在__construct()
?有沒有什麼好的理由?
只是爲了記錄在案,我想這是代碼的混凝土塊你指的是:
class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
public $application;
public function setUp()
{
$this->application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/config/settings.ini'
);
$this->bootstrap = array($this, 'bootstrap');
parent::setUp();
}
public function tearDown()
{
Zend_Controller_Front::getInstance()->resetInstance();
$this->resetRequest();
$this->resetResponse();
$this->request->setPost(array());
$this->request->setQuery(array());
}
public function bootstrap()
{
$this->application->bootstrap();
}
}
在單元測試中,setUp
和tearDown
方法用於
將世界置於已知狀態並且 然後將其返回到其原始狀態 w測試完成後。這種已知的狀態被稱爲夾具的測試。
xUnit庫的處理方式可能不同,但概念保持不變。另請參見PHPUnit手冊中的fixtures chapter:
PHPUnit支持共享設置 代碼。在運行測試方法之前,稱爲setUp()的 模板方法調用爲 。 setUp()是您創建 的對象,您將對其進行 測試。一旦測試方法 運行完成,無論是成功 還是失敗,都會調用另一個名爲tearDown()的模板方法 。 tearDown()是清理您測試的對象 的地方。
因此,PHPUnit的負責執行setUp
方法的之前包括在測試用例類的每一個試驗方法,而tearDown
在每次執行之後進行處理。
具有所述,Zend框架與PHPUnit的頂部上的附加層提供了在特徵上,而不是源代碼各個單元運行功能測試,這是,黑盒裝測試。這是通過擴展Zend_Test_PHPUnit_ControllerTestCase來實現的,以保證對應用程序資源的訪問。
在此特定示例中,應用程序在執行測試用例中的每個測試之前進行引導。如果我們考慮到我們不需要任何地方的應用程序資源,例如在原始單元測試(其他測試用例的一部分)中,這是有道理的。