【发布时间】:2017-04-03 13:09:16
【问题描述】:
我有:
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 中的低级方法和类不可用。
【问题讨论】:
-
在 setUp 方法中添加一些检查
-
setup() 的全部意义在于它应该为每个单元测试运行;因为每个单元测试都应该与任何其他单元测试完全隔离运行
-
你看at了吗?但仍然想到马克贝克的评论..
-
@xmike 对我没有帮助,因为它是一种静态方法。
-
但是单元测试不应该针对实际数据库运行;你应该嘲笑数据库