diff --git a/tests/php-unit-tests/README.md b/tests/php-unit-tests/README.md index 26c32491a..0b5d06b3d 100644 --- a/tests/php-unit-tests/README.md +++ b/tests/php-unit-tests/README.md @@ -87,6 +87,10 @@ Add annotation `@runInSeparateProcess` Each and every test case will run in a separate process. +Note : before N°6658 (3.0.4 / 3.1.1 / 3.2.0) we were also adding the `@backupGlobals disabled` +and `@preserveGlobalState disabled` annotations. This is no longer necessary as the first has this default value +already, and the second one is now set in iTopTestCase as a PHP class attribute. + #### At the test class level Add annotation `@runTestsInSeparateProcesses` Each and every test case in the class will run in a separate diff --git a/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php b/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php index 8f744235b..63ddbff9b 100644 --- a/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php +++ b/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php @@ -16,9 +16,7 @@ namespace Combodo\iTop\Test\UnitTest; use ArchivedObjectException; use CMDBObject; use CMDBSource; -use Combodo\iTop\Service\Events\EventData; use Combodo\iTop\Service\Events\EventService; -use Config; use Contact; use DBObject; use DBObjectSet; @@ -34,7 +32,6 @@ use MetaModel; use Person; use PluginManager; use Server; -use SetupUtils; use TagSetFieldData; use Ticket; use URP_UserProfile; @@ -57,6 +54,7 @@ define('TAG_ATTCODE', 'domains'); * * @since 2.7.7 3.0.1 3.1.0 N°4624 processIsolation is disabled by default and must be enabled in each test needing it (basically all tests using * iTop datamodel) + * @since 3.0.4 3.1.1 3.2.0 N°6658 move some setUp/tearDown code to the corresponding methods *BeforeClass to speed up tests process time. */ abstract class ItopDataTestCase extends ItopTestCase { @@ -950,6 +948,9 @@ abstract class ItopDataTestCase extends ItopTestCase } } + /** + * @since 3.0.4 3.1.1 3.2.0 N°6658 method creation + */ protected function assertDBChangeOpCount(string $sClass, $iId, int $iExpectedCount) { $oSearch = new \DBObjectSearch('CMDBChangeOp'); diff --git a/tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php b/tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php index 2657836b0..75d0e71d9 100644 --- a/tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php +++ b/tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php @@ -12,12 +12,9 @@ use PHPUnit\Framework\TestCase; use SetupUtils; /** - * Class ItopTestCase - * * Helper class to extend for tests that DO NOT need to access the DataModel or the Database * - * @author Eric Espie - * @package Combodo\iTop\Test\UnitTest + * @since 3.0.4 3.1.1 3.2.0 N°6658 move some setUp/tearDown code to the corresponding methods *BeforeClass to speed up tests process time. */ abstract class ItopTestCase extends TestCase { @@ -25,7 +22,10 @@ abstract class ItopTestCase extends TestCase public static $DEBUG_UNIT_TEST = false; /** - * Override the default value to disable the backup of globals in case of tests run in a separate process + * @link https://docs.phpunit.de/en/9.6/annotations.html#preserveglobalstate PHPUnit `preserveGlobalState` annotation documentation + * + * @since 3.0.4 3.1.1 3.2.0 N°6658 Override default value creation so that we don't need to add the annotation on each test classes that have runInSeparateProcess. + * This parameter isn't used when test is run in the same process so ok to change it globally ! */ protected $preserveGlobalState = false; @@ -76,7 +76,9 @@ abstract class ItopTestCase extends TestCase /** * @throws \MySQLTransactionNotClosedException see N°5538 + * * @since 2.7.8 3.0.3 3.1.0 N°5538 + * @since 3.0.4 3.1.1 3.2.0 N°6658 if transaction not closed, we are now doing a rollback */ protected function tearDown(): void { @@ -92,7 +94,11 @@ abstract class ItopTestCase extends TestCase } } - /** Helper than can be called in the context of a data provider */ + /** + * Helper than can be called in the context of a data provider + * + * @since 3.0.4 3.1.1 3.2.0 N°6658 method creation + */ public static function GetAppRoot() { if (defined('APPROOT')) {