diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableMultiRowTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableMultiRowTest.php
new file mode 100644
index 0000000..46a26e8
--- /dev/null
+++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableMultiRowTest.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Drupal\Tests\migrate_drupal\Kernel\Plugin\migrate\source;
+
+/**
+ * Tests the variable multirow source plugin.
+ *
+ * @covers \Drupal\migrate_drupal\Plugin\migrate\source\VariableMultiRow.
+ *
+ * @group migrate_drupal
+ */
+class VariableMultiRowTest extends VariableTest {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate_drupal'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    // Use the same test data as parent.
+    $tests = parent::providerSource();
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'name' => 'foo',
+        'value' => 1,
+      ],
+      [
+        'name' => 'bar',
+        'value' => FALSE,
+      ],
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableTest.php
new file mode 100644
index 0000000..f8a3d79
--- /dev/null
+++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/VariableTest.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\Tests\migrate_drupal\Kernel\Plugin\migrate\source;
+
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the variable source plugin.
+ *
+ * @covers \Drupal\migrate_drupal\Plugin\migrate\source\Variable.
+ *
+ * @group migrate_drupal
+ */
+class VariableTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate_drupal'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+
+    // The source data.
+    $tests[0]['source_data']['variable'] = [
+      ['name' => 'foo', 'value' => 'i:1;'],
+      ['name' => 'bar', 'value' => 'b:0;'],
+    ];
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'id' => 'foo',
+        'foo' => 1,
+        'bar' => FALSE,
+      ],
+    ];
+
+    // The expected count.
+    $tests[0]['expected_count'] = NULL;
+
+    // The source plugin configuration.
+    $tests[0]['configuration']['variables'] = [
+      'foo',
+      'bar',
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php
new file mode 100644
index 0000000..8c3e604
--- /dev/null
+++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php
@@ -0,0 +1,77 @@
+<?php
+
+namespace Drupal\Tests\migrate_drupal\Kernel\Plugin\migrate\source\d6;
+
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the variable source plugin.
+ *
+ * @covers \Drupal\migrate_drupal\Plugin\migrate\source\d6\i18nVariable
+ *
+ * @group migrate_drupal
+ */
+class i18nVariableTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate_drupal'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+
+    // The source data.
+    $tests[0]['source_data']['i18n_variable'] = [
+      [
+        'name' => 'site_slogan',
+        'language' => 'fr',
+        'value' => 's:19:"Migrate est génial";',
+      ],
+      [
+        'name' => 'site_name',
+        'language' => 'fr',
+        'value' => 's:11:"nom de site";',
+      ],
+      [
+        'name' => 'site_slogan',
+        'language' => 'mi',
+        'value' => 's:19:"Ko whakamataku heke";',
+      ],
+      [
+        'name' => 'site_name',
+        'language' => 'mi',
+        'value' => 's:9:"ingoa_pae";',
+      ],
+    ];
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'language' => 'fr',
+        'site_slogan' => 'Migrate est génial',
+        'site_name' => 'nom de site',
+      ],
+      [
+        'language' => 'mi',
+        'site_slogan' => 'Ko whakamataku heke',
+        'site_name' => 'ingoa_pae',
+      ],
+    ];
+
+    // The expected count.
+    $tests[0]['expected_count'] = NULL;
+
+    // The migration configuration.
+    $tests[0]['configuration']['variables'] = [
+      'site_slogan',
+      'site_name',
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowSourceWithHighwaterTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowSourceWithHighwaterTest.php
deleted file mode 100644
index f97b7a7..0000000
--- a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowSourceWithHighwaterTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Drupal\Tests\migrate_drupal\Unit\source;
-
-/**
- * Tests variable multirow source w/ high water handling.
- *
- * @group migrate_drupal
- */
-class VariableMultiRowSourceWithHighwaterTest extends VariableMultiRowTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $this->migrationConfiguration['highWaterProperty']['field'] = 'test';
-    parent::setup();
-  }
-
-}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTest.php
deleted file mode 100644
index 1ba95ba..0000000
--- a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTest.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Drupal\Tests\migrate_drupal\Unit\source;
-
-/**
- * Tests D6 variable multirow source plugin.
- *
- * @group migrate_drupal
- */
-class VariableMultiRowTest extends VariableMultiRowTestBase {
-
-}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTestBase.php b/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTestBase.php
deleted file mode 100644
index c9af613..0000000
--- a/core/modules/migrate_drupal/tests/src/Unit/source/VariableMultiRowTestBase.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Drupal\Tests\migrate_drupal\Unit\source;
-
-use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
-
-/**
- * Base class for variable multirow source unit tests.
- */
-abstract class VariableMultiRowTestBase extends MigrateSqlSourceTestCase {
-
-  // The plugin system is not working during unit testing so the source plugin
-  // class needs to be manually specified.
-  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\VariableMultiRow';
-
-  // The fake Migration configuration entity.
-  protected $migrationConfiguration = array(
-    'id' => 'test',
-    'source' => array(
-      'plugin' => 'd6_variable_multirow',
-      'variables' => array(
-        'foo',
-        'bar',
-      ),
-    ),
-  );
-
-  protected $expectedResults = array(
-    array('name' => 'foo', 'value' => 1),
-    array('name' => 'bar', 'value' => FALSE),
-  );
-
-  protected $databaseContents = array(
-    'variable' => array(
-      array('name' => 'foo', 'value' => 'i:1;'),
-      array('name' => 'bar', 'value' => 'b:0;'),
-    ),
-  );
-
-}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/VariableTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/VariableTest.php
deleted file mode 100644
index 18a3033..0000000
--- a/core/modules/migrate_drupal/tests/src/Unit/source/VariableTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Drupal\Tests\migrate_drupal\Unit\source;
-
-use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
-
-/**
- * Tests the variable source plugin.
- *
- * @group migrate_drupal
- */
-class VariableTest extends MigrateSqlSourceTestCase {
-
-  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\Variable';
-
-  protected $migrationConfiguration = array(
-    'id' => 'test',
-    'highWaterProperty' => array('field' => 'test'),
-    'source' => array(
-      'plugin' => 'd6_variable',
-      'variables' => array(
-        'foo',
-        'bar',
-      ),
-    ),
-  );
-
-  protected $expectedResults = array(
-    array(
-      'id' => 'foo',
-      'foo' => 1,
-      'bar' => FALSE,
-    ),
-  );
-
-  protected $databaseContents = array(
-    'variable' => array(
-      array('name' => 'foo', 'value' => 'i:1;'),
-      array('name' => 'bar', 'value' => 'b:0;'),
-    ),
-  );
-
-}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
deleted file mode 100644
index bcfb6c2..0000000
--- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Drupal\Tests\migrate_drupal\Unit\source\d6;
-
-use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
-
-/**
- * Tests the variable source plugin.
- *
- * @group migrate_drupal
- */
-class i18nVariableTest extends MigrateSqlSourceTestCase {
-
-  // The plugin system is not working during unit testing so the source plugin
-  // class needs to be manually specified.
-  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\d6\i18nVariable';
-
-  /**
-   * Define bare minimum migration configuration.
-   */
-  protected $migrationConfiguration = [
-    'id' => 'test',
-    'highWaterProperty' => array('field' => 'test'),
-    'source' => [
-      'plugin' => 'i18n_variable',
-      'variables' => [
-        'site_slogan',
-        'site_name',
-      ],
-    ],
-  ];
-
-  /**
-   * Expected results from the source.
-   */
-  protected $expectedResults = [
-    [
-      'language' => 'fr',
-      'site_slogan' => 'Migrate est génial',
-      'site_name' => 'nom de site',
-    ],
-    [
-      'language' => 'mi',
-      'site_slogan' => 'Ko whakamataku heke',
-      'site_name' => 'ingoa_pae',
-    ]
-  ];
-
-  /**
-   * Database contents for tests.
-   */
-  protected $databaseContents = [
-    'i18n_variable' => [
-      array('name' => 'site_slogan', 'language' => 'fr', 'value' => 's:19:"Migrate est génial";'),
-      array('name' => 'site_name', 'language' => 'fr', 'value' => 's:11:"nom de site";'),
-      array('name' => 'site_slogan', 'language' => 'mi', 'value' => 's:19:"Ko whakamataku heke";'),
-      array('name' => 'site_name', 'language' => 'mi', 'value' => 's:9:"ingoa_pae";'),
-    ],
-  ];
-
-}
