3
我有以下的測試/文件夾中:如何在phpUnit的所有測試中傳播setUp和tearDown?
tests/ ClassOne.test.php ClassTwo.test.php ClassThree.test.php
我有以下setUp()
和tearDown()
方法複製到每一個文件:
public function setUp() { $this->dbTestData(); } public function tearDown() { $this->dbClear(); } private function dbTestData() { // populate the database with a few entries Entities\AutocompleteValue::create(array('field_name' => 'testing1', 'entry_value' => 'Aisforapple')); Entities\AutocompleteValue::create(array('field_name' => 'testing2', 'entry_value' => 'Bisforball')); Entities\AutocompleteValue::create(array('field_name' => 'testing3', 'entry_value' => 'Cisforcat')); Entities\AutocompleteValue::create(array('field_name' => 'testing4', 'entry_value' => 'Disfordog')); } private function dbClear() { DB::table('autocomplete_values')->delete(); }
我已經考慮寫一個獨立的類包含這些方法,require()
那個文件在每個測試文件中,並且從那個類而不是PHPUnit_Framework_Testcase
。有更簡單的解決方案嗎?
因爲我的編碼框架的CLI工具(Laravel,artisan)處理它的創建,所以我不能輕鬆訪問phpunit.xml
。因此,如果存在不涉及該文件的解決方案會更好。
編寫一個基礎測試課並從中擴展是最好的方法,這不容易嗎? – 2013-02-09 11:16:41
我不喜歡我必須在每個測試文件中寫一個'require'語句。我想使用自動加載,但我的框架不會允許這樣做。所以看起來我被卡在所有測試文件中至少要複製一行。 – 2013-02-09 11:21:09
擁有基礎測試課程是非常普遍的做法。如果你想用更清潔(但更難)的方式,你最終可以考慮使用合成。 – Ocramius 2013-02-09 15:40:33