PHPUnit 當兩個測試方法 @depends 同一個測試方法會發(fā)生什么

先看一個例子:testPushtestPop 都依賴 testEmpty

<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class StackTest extends TestCase
{
    public function testEmpty(): array
    {
        $stack = [];
        $this->assertEmpty($stack);

        return $stack;
    }

    /**
     * @depends testEmpty
     */
    public function testPush(array $stack): array
    {
        array_push($stack, 'foo');
        $this->assertSame('foo', $stack[count($stack)-1]);
        $this->assertNotEmpty($stack);

        return $stack;
    }

    /**
     * @depends testEmpty
     */
    public function testPop(array $stack): void
    {
        $this->assertSame('foo', array_pop($stack));
        $this->assertEmpty($stack);
    }
}

那么,testEmpty 會執(zhí)行幾次呢?答案是1次。這意味著對象的狀態(tài)在三個測試中共享,如果在 testPushtestPop 中保持只讀訪問,是okay的。否則有三種選擇:

  1. @depends clone
  2. @depends shallowClone
  3. 不用@depends

如果 clone 能解決問題的話,就再好不過了。否則就放棄吧,提前一個公用的方法出來,不要用 @depends 了。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容