有什么方法可以在 phpunit 测试之间保留实例变量?
我正在为SOA系统编写功能测试,因此需要从前端测试后端子系统。
这是一个标准的CRUD系统。我有一个测试,测试我可以创建一个对象,它返回我新对象的ID。在随后的测试中,我想编辑然后删除此对象,但是 phpunit 似乎每次都重新实例化测试类,因此我丢失了实例变量。
我怎样才能做到这一点?在体系结构中的每台服务器上运行功能测试不是一个选项。
我正在为SOA系统编写功能测试,因此需要从前端测试后端子系统。
这是一个标准的CRUD系统。我有一个测试,测试我可以创建一个对象,它返回我新对象的ID。在随后的测试中,我想编辑然后删除此对象,但是 phpunit 似乎每次都重新实例化测试类,因此我丢失了实例变量。
我怎样才能做到这一点?在体系结构中的每台服务器上运行功能测试不是一个选项。
在测试之间传递内容的一种方法是使用@depends
注释
public function testCreate() {
//...
return $id;
}
/**
* @depends testCreate
*/
public function testDelete($id) {
// use $id
}
如果您这样做,则在创建不起作用时将跳过“删除”测试。
因此,如果服务根本不起作用,则只会收到一个错误,而不是许多失败的测试。
如果您不想这样做,或者由于某种原因而与您的情况不匹配,则静态类变量也可以是一种选择,但您应该真正确定您知道自己绝对需要它们:)
由于您希望运行每个测试用例一次,因此您可以将实例变量存储在类级别,例如在静态变量中,或者在用于键的外部单例/全局存储中...get_class($testCase)