在phpunit测试之间保留实例变量的任何方法?

时间:2011-07-18 16:00:42

标签: php phpunit

我正在为SOA系统编写功能测试,因此需要从前端测试后端子系统。

这是一个标准的CRUD系统。我有一个测试,测试我可以创建一个对象,它返回我的新对象的ID。在后续的测试中,我想编辑然后删除这个对象,但phpunit似乎每次都重新实例化测试类,所以我丢失了我的实例变量。

我怎样才能做到这一点?在架构中的每个服务器上运行功能测试不是一种选择。

3 个答案:

答案 0 :(得分:35)

在测试之间传递内容的一种方法是使用@depends注释

public function testCreate() {
    //...
    return $id;
}

/**
 * @depends testCreate
 */
public function testDelete($id) {
    // use $id
}

如果您这样做,如果创建不起作用,将跳过“删除”测试。

因此,如果服务完全不起作用而不是许多失败的测试,那么您只会出现一个错误。


如果您不想这样做或因为任何原因与您的情况不匹配,静态类变量也可以是一个选项,但您应该确定您确实知道您绝对需要它们:)

答案 1 :(得分:4)

由于您希望运行每个测试用例一次,您可以将实例变量存储在类级别(例如静态变量),或者在外部单例/全局存储中使用get_class($testCase)来存储键...

答案 2 :(得分:0)

我想我会在运行'edit'或'delete'之前运行'create'测试,并相应地设置实例变量。