Depends Annotation
The @depends annotation helps you to define some dependencies between methods.
Format
1
2
3
/**
 * @depends methodName
 */
Please note that dependencies don’t define the order in which the test methods are executed, so you still have to keep to proper order for your methods.
Example 1
Let’s check the following basic example.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * @return int
 */
public function testOne(): int
{
    $number = 2;
    $this->assertEquals(2, $number);
    return $number;
}
/**
 * @depends testOne
 *
 * @param $number
 */
public function testNumber($number)
{
    $this->assertEquals(2, $number);
}
Example 2
If using multiple dependencies, arguments are passed in the annotations’ defined order.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * @return int
 */
public function testTwo(): int
{
    $number = 2;
    $this->assertEquals(2, $number);
    return $number;
}
/**
 * @return int
 */
public function testOne(): int
{
    $number = 1;
    $this->assertEquals(1, $number);
    return $number;
}
/**
 * @depends testOne
 * @depends testTwo
 *
 * @param $one
 * @param $two
 */
public function testNumber(int $one, int $two)
{
    $this->assertEquals(1, $one);
    $this->assertEquals(2, $two);
}
Example 3
Let’s check the following practical example, where we’ll be checking the customer email by customer ID.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\TestFramework\Helper\Bootstrap;
...
/**
 * @magentoDataFixture Magento/Customer/_files/customer.php
 */
public function testLoadCustomer(): CustomerInterface
{
    $customerId = 1;
    $objectManager = Bootstrap::getObjectManager();
    $customerRepository = $objectManager->create(CustomerRepositoryInterface::class);
    return $customerRepository->getById($customerId);
}
/**
 * @depends testLoadCustomer
 *
 * @param CustomerInterface $customer
 */
public function testEmail(CustomerInterface $customer)
{
    $this->assertEquals('customer@example.com', $customer->getEmail());
}
You can read more about PHPUnit dependency annotation here.