phpunit中的depends似乎无法正常工作

3
也许只是我个人的问题,但我觉得@depends并没有像我期望的那样工作。我的代码:
<?php
use PHPUnit\Framework\TestCase;

class MyTest extends TestCase
{
    /*
     * @depends testFunc1
     */
    public function testFunc2()
    {
        exit('TEST FUNC 2 called');
    }

    public function testFunc1()
    {
        exit('TEST FUNC 1 called');
    }
}

当我运行命令 phpunit MyTest.php 时,本应该看到 TEST FUNC 1 called,但实际上却看到了TEST FUNC 2 called。貌似它只是按照脚本中测试用例的顺序来执行测试,并不考虑 @depends 属性。这确实引发了一个问题: @depends 到底是做什么用的?
我的PHPUnit版本是5.7.20。

1
PHPUnit支持在测试方法之间声明明确的依赖关系。这些依赖关系不定义要执行测试方法的顺序,但它们允许生产者返回测试装置的实例,并将其传递给相关的使用者。 - marcelog
你有阅读过文档吗?@depends可以正常工作,但只有在正确使用的情况下。测试中没有exit()的位置(通常不应在函数或方法中使用)。 - axiac
1
@axiac - 退出点的目的只是为了展示哪个方法被首先调用。我也可以这样做 echo "TEST FUNC 1/2 called\n";, 但我认为 exit 更加清晰明了。卷入到这种细节中是有点像在纠缠于语义问题。接下来呢?因为没有任何断言而说它是无用的单元测试? - neubert
@neubert 你可以通过使用断言来实现所需的结果,通过抛出意外异常或者标记测试为不完整或跳过。在所有这些情况下,PHPUnit会在其报告的末尾报告受影响的测试。 - axiac
1个回答

11
您需要使用/**而不是/*来开始docblock。

2
先生,您刚刚在我搜索了数小时后拯救了我! - Valdrinium
我遇到了同样的问题,而这个答案帮助了我。 - jking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接