--- /dev/null
+<?php
+
+namespace Drupal\Tests;
+
+/**
+ * Tests the PHPUnit forward compatibility trait.
+ *
+ * @coversDefaultClass \Drupal\Tests\PhpunitCompatibilityTrait
+ * @group Tests
+ */
+class PhpunitCompatibilityTraitTest extends UnitTestCase {
+
+ /**
+ * Tests that getMock is available and calls the correct parent method.
+ *
+ * @covers ::getMock
+ * @dataProvider providerMockVersions
+ */
+ public function testGetMock($className, $expected) {
+ $class = new $className();
+ $this->assertSame($expected, $class->getMock($this->randomMachineName()));
+ }
+
+ /**
+ * Tests that createMock is available and calls the correct parent method.
+ *
+ * @covers ::createMock
+ * @dataProvider providerMockVersions
+ */
+ public function testCreateMock($className, $expected) {
+ $class = new $className();
+ $this->assertSame($expected, $class->createMock($this->randomMachineName()));
+ }
+
+ /**
+ * Returns the class names and the string they return.
+ *
+ * @return array
+ */
+ public function providerMockVersions() {
+ return [
+ [UnitTestCasePhpunit4TestClass::class, 'PHPUnit 4'],
+ [UnitTestCasePhpunit4TestClassExtends::class, 'PHPUnit 4'],
+ [UnitTestCasePhpunit6TestClass::class, 'PHPUnit 6'],
+ [UnitTestCasePhpunit6TestClassExtends::class, 'PHPUnit 6'],
+ ];
+ }
+
+}
+
+/**
+ * Test class for \PHPUnit\Framework\TestCase in PHPUnit 4.
+ */
+class Phpunit4TestClass {
+ public function getMock($originalClassName) {
+ return 'PHPUnit 4';
+ }
+
+}
+
+/**
+ * Test class for \PHPUnit\Framework\TestCase in PHPUnit 6.
+ */
+class Phpunit6TestClass {
+ public function createMock($originalClassName) {
+ return 'PHPUnit 6';
+ }
+
+ public function getMockbuilder() {
+ return new Mockbuilder();
+ }
+
+}
+
+/**
+ * Test double for PHPUnit_Framework_MockObject_MockBuilder.
+ */
+class Mockbuilder {
+ public function __call($name, $arguments) {
+ return $this;
+ }
+
+ public function getMock() {
+ return 'PHPUnit 6';
+ }
+
+}
+
+/**
+ * Test class for \Drupal\Tests\UnitTestCase with PHPUnit 4.
+ */
+class UnitTestCasePhpunit4TestClass extends Phpunit4TestClass {
+ use PhpunitCompatibilityTrait;
+
+}
+
+/**
+ * Test class for \Drupal\Tests\UnitTestCase with PHPUnit 4.
+ */
+class UnitTestCasePhpunit4TestClassExtends extends UnitTestCasePhpunit4TestClass {
+}
+
+/**
+ * Test class for \Drupal\Tests\UnitTestCase with PHPUnit 6.
+ */
+class UnitTestCasePhpunit6TestClass extends Phpunit6TestClass {
+ use PhpunitCompatibilityTrait;
+
+}
+
+/**
+ * Test class for \Drupal\Tests\UnitTestCase with PHPUnit 6.
+ */
+class UnitTestCasePhpunit6TestClassExtends extends UnitTestCasePhpunit6TestClass {
+}