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