企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 概述 PHPUnit支持对测试方法之间的显式依赖关系进行声明,通过添加`@depends`标记 >[info] 默认情况下,生产者所产生的返回值将“原样”传递给相应的消费者。这意味着,如果生产者返回的是一个对象,那么传递给消费者的将是一个指向此对象的引用。如果需要传递对象的副本而非引用,则应当用 @depends clone 替代 @depends。 ## 实例 ### 单个依赖 <details> <summary>test.php</summary> ``` use PHPUnit\Framework\TestCase; class EmailTest extends TestCase{ public function testEmpty(): array{ $stack = []; $this->assertEmpty($stack); return $stack; } /** * 接受 testEmpry return 的值 * @depends testEmpty * @param array $stack * @return array */ public function testPush(array $stack): array{ $stack[] = 'foo'; $this->assertEquals('foo', $stack[0]); $this->assertNotEmpty($stack); return $stack; } /** * 接受 testPush 返回的值 * @depends testPush * @param array $stack */ public function testPop(array $stack):void { $this->assertEquals('foo', array_pop($stack)); $this->assertEmpty($stack); } } ``` </details> <br/> ### 同时依赖多个 <details> <summary>test.php</summary> ``` <?php use PHPUnit\Framework\TestCase; class MultipleDependenciesTest extends TestCase{ /** * @return int */ public function testOne(){ // 不加断言会报错 $this->assertTrue(true); return 1; } /** * @return int */ public function testTwo(){ $this->assertTrue(true); return 2; } /** * * @depends testOne * @depends testTwo */ public function testResult(){ $arr = func_get_args(); $this->assertEquals([1,2], $arr); } } ``` </details> <br/>