2011-07-18 39 views
19

我正在爲SOA系統編寫功能測試,因此需要從前端測試後端子系統。任何方式來保存phpunit測試之間的實例變量?

這是一個標準的CRUD系統。我有一個測試,測試我可以創建一個對象,並返回給我新的對象的ID。在隨後的測試中,我想編輯然後刪除這個對象,但是phpunit似乎每次都會重新實例化測試類,所以我失去了我的實例變量。

我該如何做到這一點?在架構中的每臺服務器上運行功能測試不是一種選擇。

+3

一件事請記住,在執行任何測試之前,PHPUnit會爲每個測試方法創建一個新的測試用例實例。* –

+3

有一點要記住的是,PHPUnit有**糟糕的設計** ... – inf3rno

回答

0

我想我會在運行'編輯'或'刪除'之前運行'創建'測試,並相應地設置實例變量。

32

一到測試間傳遞的東西的方式是使用@depends註釋

public function testCreate() { 
    //... 
    return $id; 
} 

/** 
* @depends testCreate 
*/ 
public function testDelete($id) { 
    // use $id 
} 

,如果你不喜歡它,如果創造不工作「刪除」測試將被跳過。

因此,如果服務完全不起作用,而不是許多失敗的測試,則只會得到一個錯誤。


如果你不想做,或不符合您無論出於何種原因靜態類變量也可以是一種選擇的情況下,但你應該真正確保你知道你絕對需要它們: )

+0

我有完全相同的方法名稱,我正在尋找解決方案:D – Jekis

4

既然你想一次運行每個測試用例,你可以在類級別的實例變量存儲例如在靜態變量,或在外部單/全球存儲使用get_class($testCase)鑰匙...