This is a beta release of documentation for Magento 2.4, published for previewing soon-to-be-released functionality. Content in this version is subject to change. Links to the v2.4 code base may not properly resolve until the code is officially released.

Application Area Annotation in the Integration Testing Framework

Configure a test environment in scope of the particular application area with the @magentoAppArea annotation.

Format

1
2
3
/**
 * @magentoAppArea <area code>
 */

Fallback sequence

  1. Test annotation
  2. Test case annotation
  3. Default application area, which is global

Test case annotation

A test case annotation enables the specified application area for all tests in the test case.

Test annotations override test case annotations.

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * @magentoAppArea adminhtml
 */
namespace Vendor\Module;
class ClassToTest extends \PHPUnit\Framework\TestCase
{
    public function testOne()
    {
        //...
    }

    /**
     * @magentoAppArea frontend
     */
    public function testTwo()
    {
        //...
    }

    public function testThree()
    {
        //...
    }
}

testOne() and testThree() are set to run in scope of the adminhtml application area, whereas testTwo() is set to run in scope of the frontend area.

Test annotation

A test annotation is used to configure the environment in scope of the specified application area for the test. Magento is reinitialized in the corresponding scope each time you specify a different area.

Example:

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
35
36
37
38
39
40
namespace \Vendor\Module;

class ClassToTest extends \PHPUnit\Framework\TestCase
{
    // executes the test in scope of the global area
    public function testOne()
    {
        //...
    }

    // reinitializes the application and executes the test in scope of the frontend area
    /**
     * @magentoAppArea frontend
     */
    public function testTwo()
    {
        //...
    }

    // reinitializes the application and executes the test in scope of the adminhtml area
    /**
     * @magentoAppArea adminhtml
     */
    public function testThree()
    {
        //...
    }

    // reinitializes the application and executes the test in scope of the global area
    public function testFour()
    {
        //...
    }

    // executes in scope of the global area
    public function testFive()
    {
        //...
    }
}