У меня есть следующие тесты/папки:Как распространять setUp и tearDown во всех тестах в phpUnit?
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
. Есть ли более легкое решение?
У меня нет легкого доступа к phpunit.xml
, потому что инструмент CLI моей рамки кодирования (Laravel, artisan) обрабатывает его создание. Следовательно, было бы лучше, если есть решение, не связанное с этим файлом.
Написание базового тестового класса и переход от него - лучший способ пойти, как это нелегко? –
Мне не понравилось, что мне нужно написать инструкцию «require» в каждом тестовом файле. Я хотел использовать автозагрузку, но моя инфраструктура не позволит этого. Похоже, я застрял, чтобы скопировать хотя бы одну строку во всех моих тестовых файлах. –
Наличие базового тестового класса - очень распространенная практика. Вы можете в конечном итоге рассмотреть возможность использования композиции, если хотите пойти с более чистым (но сложнее) способом. – Ocramius