我正在为SOA系统编写功能测试,因此需要从前端测试后端子系统。
这是一个标准的CRUD系统。我有一个测试,测试我是否可以创建一个对象,它返回给我新对象的ID。在随后的测试中,我想编辑然后删除这个对象,但是phpunit似乎每次都重新实例化测试类,所以我丢失了实例变量。
我怎样才能做到这一点?不能在架构中的每个服务器上运行功能测试。
在测试之间传递内容的一种方法是使用 @depends
注释
public function testCreate() {
//...
return $id;
}
/**
* @depends testCreate
*/
public function testDelete($id) {
// use $id
}
如果你这样做,"delete"测试将被跳过,如果创建不工作。
所以如果服务不工作,你只会得到一个错误,而不是许多失败的测试。
如果你不想这样做,或者因为任何原因与你的情况不匹配,静态类变量也可以是一个选项,但你应该确保你知道你绝对需要它们:)
由于您想要运行每个测试用例一次,您可以在类级别上存储实例变量,例如在静态变量中,或者在外部单例/全局存储中使用get_class($testCase)
作为键…
我想我会在运行'编辑'或'删除'之前运行'创建'测试,并相应地设置实例变量。
使用TestCase类的setUp()方法
protected function setUp(): void
{
parent::setUp();
//init something
}