我有:
1. IntegrationTestCase extends TestCase
2. UnitTestCase extends TestCase
3. AcceptanceTestCase extends TestCase
在这些测试中,我有很多非静态方法,这些方法在很多测试中都被使用。我的所有测试类都扩展自这三个类之一。
现在,在很多测试类中,我都有一个名为
setUp
的方法,它准备所需的数据和服务,并将它们分配给类变量:class SomeTestClass extends IntegrationTestCase
{
private $foo;
public function setUp()
{
parent::setUp();
$bar = $this->createBar(...);
$this->foo = new Foo($bar);
}
public function testA() { $this->foo...; }
public function testB() { $this->foo...; }
}
问题是每个测试都会运行
setUp
方法,这与我想要做的相矛盾,如果setUp
方法执行的内容需要很长时间,那么这个时间会被测试方法的数量所乘以。使用public function __construct(...) { parent::__construct(..); ... }
会带来问题,因为现在Laravel中的较低级别的方法和类不可用。