我有一个Symfony WebTestCase
- 扩展PHP Test类和DRY-trait。我的类@depend
中的测试函数在我的特征中测试函数,但是我无法在类测试之前执行特征测试。这可能吗?
trait TestTrait
{
/**
* @beforeClass
*/
public function testBeforeAnythingElseHappens()
{
/*...*/
}
/* more functions */
}
测试类
class Test extends WebTestCase
{
use TestTrait;
/**
* @depends testBeforeAnythingElseHappens
*/
function testClassSpecificStuff()
{
/* ... */
}
}
答案 0 :(得分:0)
首先,请参阅PHPUnit Manual - Appendix B. Annotations:
@beforeClass
@beforeClass
注释可用于指定在运行测试类中的任何测试方法以设置共享夹具之前应调用的静态方法。
所以,你不应该在这里使用@beforeClass
- 它旨在允许设置灯具。此外,注释为的方法应为static
。
其次,请参阅PHPUnit Manual - Appendix B. Annotations:
@depends
PHPUnit支持在测试方法之间声明显式依赖关系。此类依赖项不定义测试方法的执行顺序,但它们允许生产者返回测试夹具的实例并将其传递给依赖的使用者。
所以是的,您可以使用@depends
注释来声明测试之间的依赖关系。只需删除@beforeClass
注释:
trait TestTrait
{
public function testBeforeAnythingElseHappens()
{
}
}
class Test extends WebTestCase
{
use TestTrait;
/**
* @depends testBeforeAnythingElseHappens
*/
public function testClassSpecificStuff()
{
}
}
第三,几句建议(根据我自己的经验):
供参考,见: