Edit in GitHubLog an issue

Application isolation annotation

An application state can be changed during test execution. Such changes can cause a false test failure.

The integration testing framework keeps the tests isolated and provides optimal performance by default. Isolation is managed using the @magentoAppIsolation annotation.

Format

Application isolation annotation:

Copied to your clipboard
/**
* @magentoAppIsolation enabled|disabled
*/

Test case annotation

The application and related objects are reinitialized after each test case execution. This behavior helps to isolate application objects in different test cases. The test case isolation is mandatory and cannot be disabled.

Test annotation

By default, the application isolation (that is automatic reinitialization) in tests is disabled. To enable the application isolation for a test, use the @magentoAppIsolation annotation.

Example:

Copied to your clipboard
/**
* @magentoAppIsolation enabled
*/
public function testGetAddressById()
{
$addressId = 2;
$address = $this->repository->getById($addressId);
$this->assertEquals($this->_expectedAddresses[1], $address);
}

Defaults

Default values for the @magentoAppIsolation annotation:

Test class ancestorsTest case (class)Test (method)
\PHPUnit\Framework\TestCase
enabled
disabled
\Magento\TestFramework\TestCase\AbstractController
enabled
enabled

@magentoAppIsolation cannot be disabled at the test case level.

You can use non-isolated tests unless they do not modify or utilize the same application areas such as:

  • same attributes of an application object.
  • same paths in a current configuration or current scope (for example "store").
  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2024 Adobe. All rights reserved.