diff --git a/tests/src/Kernel/CommerceMigrateTestTrait.php b/tests/src/Kernel/CommerceMigrateTestTrait.php
index 9f0ef37..721179f 100644
--- a/tests/src/Kernel/CommerceMigrateTestTrait.php
+++ b/tests/src/Kernel/CommerceMigrateTestTrait.php
@@ -9,7 +9,9 @@ use Drupal\commerce_order\Entity\OrderItem;
 use Drupal\commerce_price\Entity\Currency;
 use Drupal\commerce_price\Entity\CurrencyInterface;
 use Drupal\commerce_product\Entity\Product;
+use Drupal\commerce_product\Entity\ProductType;
 use Drupal\commerce_product\Entity\ProductVariation;
+use Drupal\commerce_product\Entity\ProductVariationType;
 use Drupal\commerce_store\Entity\Store;
 use Drupal\profile\Entity\Profile;
 
@@ -217,6 +219,23 @@ trait CommerceMigrateTestTrait {
   }
 
   /**
+   * Asserts a product type entity.
+   *
+   * @param string $id
+   *   The product type id.
+   * @param string $expected_label
+   *   The expected label.
+   * @param string $expected_description
+   *   The expected description.
+   */
+  public function assertProductTypeEntity($id, $expected_label, $expected_description) {
+    $product_type = ProductType::load($id);
+    $this->assertInstanceOf(ProductType::class, $product_type);
+    $this->assertSame($expected_label, $product_type->label());
+    $this->assertSame($expected_description, $product_type->getDescription());
+  }
+
+  /**
    * Asserts a product variation.
    *
    * @param int $id
@@ -249,6 +268,26 @@ trait CommerceMigrateTestTrait {
   }
 
   /**
+   * Asserts a product variation type.
+   *
+   * @param string $id
+   *   The product variation type.
+   * @param string $expected_label
+   *   The expected label.
+   * @param string $expected_order_item_type_id
+   *   The expected order item type id.
+   * @param bool $expected_should_generate_title
+   *   The expected indicator that a title is generated.
+   */
+  public function assertProductVariationTypeEntity($id, $expected_label, $expected_order_item_type_id, $expected_should_generate_title) {
+    $variation_type = ProductVariationType::load($id);
+    $this->assertInstanceOf(ProductVariationType::class, $variation_type);
+    $this->assertSame($expected_label, $variation_type->label());
+    $this->assertSame($expected_order_item_type_id, $variation_type->getOrderItemTypeId());
+    $this->assertSame($expected_should_generate_title, $variation_type->shouldGenerateTitle());
+  }
+
+  /**
    * Asserts a store entity.
    *
    * @param int $id
diff --git a/tests/src/Kernel/d7/Commerce/ProductTest.php b/tests/src/Kernel/d7/Commerce/ProductTest.php
index b043ecc..8e1db98 100644
--- a/tests/src/Kernel/d7/Commerce/ProductTest.php
+++ b/tests/src/Kernel/d7/Commerce/ProductTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\commerce_migrate\Kernel\d7\Commerce;
 
 use Drupal\commerce_product\Entity\Product;
+use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
  * Tests line item migration.
@@ -11,6 +12,8 @@ use Drupal\commerce_product\Entity\Product;
  */
 class ProductTest extends Commerce1TestBase {
 
+  use CommerceMigrateTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -22,7 +25,7 @@ class ProductTest extends Commerce1TestBase {
   ];
 
   /**
-   * @inheritDoc
+   * {@inheritdoc}
    */
   protected function setUp() {
     parent::setUp();
@@ -44,23 +47,16 @@ class ProductTest extends Commerce1TestBase {
   }
 
   /**
-   * Test profile migration from Drupal 7 to 8.
+   * Test product migration from Drupal 7 Commerce to Drupal 8.
    */
   public function testProduct() {
-    $product = Product::load(15);
-    $this->assertNotNull($product);
-    $this->assertEquals('Go green with Drupal Commerce Reusable Tote Bag', $product->label());
-    $this->assertNotEmpty($product->getStoreIds());
+    $this->assertProductEntity(15, '1', 'Go green with Drupal Commerce Reusable Tote Bag', TRUE, ['1'], ['1']);
 
-    /** @var \Drupal\commerce_product\Entity\ProductVariationInterface $variation */
-    $variation = $product->variations->first()->entity;
-    $this->assertNotEmpty($variation);
-    $this->assertEquals($variation->getSku(), 'TOT1-GRN-OS');
-    $this->assertEquals($variation->label(), 'Tote Bag 1');
+    $product = Product::load(15);
+    $variation_id = $product->variations->target_id;
+    $this->assertProductVariationEntity($variation_id, '0', 'TOT1-GRN-OS', '16.000000', 'USD', '1', 'Tote Bag 1', 'default');
 
-    $product = Product::load(26);
-    $this->assertEquals('Commerce Guys USB Key', $product->label());
-    $this->assertEquals(3, $product->variations->count());
+    $this->assertProductEntity(26, '1', 'Commerce Guys USB Key', TRUE, ['1'], ['28', '29', '30']);
   }
 
 }
diff --git a/tests/src/Kernel/d7/Commerce/ProductTypeTest.php b/tests/src/Kernel/d7/Commerce/ProductTypeTest.php
index a736e8b..f017431 100644
--- a/tests/src/Kernel/d7/Commerce/ProductTypeTest.php
+++ b/tests/src/Kernel/d7/Commerce/ProductTypeTest.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\Tests\commerce_migrate\Kernel\d7\Commerce;
 
-use Drupal\commerce_product\Entity\ProductType;
+use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
  * Tests line item migration.
@@ -11,6 +11,8 @@ use Drupal\commerce_product\Entity\ProductType;
  */
 class ProductTypeTest extends Commerce1TestBase {
 
+  use CommerceMigrateTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -37,15 +39,11 @@ class ProductTypeTest extends Commerce1TestBase {
    * Test product type migration from Drupal 7 to 8.
    */
   public function testProductType() {
-    $bags_cases = ProductType::load('bags_cases');
-    $this->assertNotNull($bags_cases);
-    $this->assertEquals('Bags & Cases', $bags_cases->label());
-    $this->assertEquals('A <em>Bags & Cases</em> is a content type which contain product variations.', $bags_cases->getDescription());
-
-    $tops = ProductType::load('tops');
-    $this->assertNotNull($tops);
-    $this->assertEquals('Tops', $tops->label());
-    $this->assertEquals('A <em>Tops</em> is a content type which contain product variations.', $tops->getDescription());
+    $description = 'A <em>Bags & Cases</em> is a content type which contain product variations.';
+    $this->assertProductTypeEntity('bags_cases', 'Bags & Cases', $description);
+
+    $description = 'A <em>Tops</em> is a content type which contain product variations.';
+    $this->assertProductTypeEntity('tops', 'Tops', $description);
 
     /** @var \Drupal\Core\Entity\EntityFieldManager $field_manager */
     $field_manager = \Drupal::service('entity_field.manager');
diff --git a/tests/src/Kernel/d7/Commerce/ProductVariationTest.php b/tests/src/Kernel/d7/Commerce/ProductVariationTest.php
index 3b8b68d..a1000e2 100644
--- a/tests/src/Kernel/d7/Commerce/ProductVariationTest.php
+++ b/tests/src/Kernel/d7/Commerce/ProductVariationTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\commerce_migrate\Kernel\d7\Commerce;
 
 use Drupal\commerce_product\Entity\ProductVariation;
+use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
  * Tests line item migration.
@@ -11,6 +12,8 @@ use Drupal\commerce_product\Entity\ProductVariation;
  */
 class ProductVariationTest extends Commerce1TestBase {
 
+  use CommerceMigrateTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -36,16 +39,21 @@ class ProductVariationTest extends Commerce1TestBase {
   }
 
   /**
-   * Test profile migration from Drupal 7 to 8.
+   * Test product variation migration from Drupal 7 Commerce to Drupal 8.
    */
   public function testProductVariation() {
+    $this->assertProductVariationEntity(1, '0', 'TOT1-GRN-OS', '16.000000', 'USD', '1', 'Tote Bag 1', 'default');
+    $this->assertProductVariationEntity(11, '0', 'HAT1-GRY-OS', '16.000000', 'USD', '11', 'Hat 1', 'default');
+    $this->assertProductVariationEntity(19, '0', 'SHO2-PRL-04', '40.000000', 'USD', '19', 'Shoe 2', 'default');
+    $this->assertProductVariationEntity(20, '0', 'SHO2-PRL-05', '40.000000', 'USD', '20', 'Shoe 2', 'default');
+    $this->assertProductVariationEntity(28, '0', 'USB-BLU-08', '11.990000', 'USD', '28', 'Storage 1', 'default');
+    $this->assertProductVariationEntity(29, '0', 'USB-BLU-16', '17.990000', 'USD', '29', 'Storage 1', 'default');
+    $this->assertProductVariationEntity(30, '0', 'USB-BLU-32', '29.990000', 'USD', '30', 'Storage 1', 'default');
+
+    // @TODO: Move these tests to CommerceMigrateTestTrait
     $product = ProductVariation::load(1);
-    $this->assertNotNull($product);
-    $this->assertEquals($product->getSku(), 'TOT1-GRN-OS');
-    $this->assertEquals($product->label(), 'Tote Bag 1');
     $this->assertEquals($product->getCreatedTime(), 1493287314);
     $this->assertEquals($product->getChangedTime(), 1493287314);
-    $this->assertEquals(16, $product->getPrice()->getNumber());
   }
 
 }
diff --git a/tests/src/Kernel/d7/Commerce/ProductVariationTypeTest.php b/tests/src/Kernel/d7/Commerce/ProductVariationTypeTest.php
index 29f5f52..5a0ab73 100644
--- a/tests/src/Kernel/d7/Commerce/ProductVariationTypeTest.php
+++ b/tests/src/Kernel/d7/Commerce/ProductVariationTypeTest.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\Tests\commerce_migrate\Kernel\d7\Commerce;
 
-use Drupal\commerce_product\Entity\ProductVariationType;
+use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
  * Tests product variation type migration.
@@ -11,6 +11,8 @@ use Drupal\commerce_product\Entity\ProductVariationType;
  */
 class ProductVariationTypeTest extends Commerce1TestBase {
 
+  use CommerceMigrateTestTrait;
+
   /**
    * Modules to enable.
    *
@@ -42,11 +44,7 @@ class ProductVariationTypeTest extends Commerce1TestBase {
    * Product variation types in Drupal 8 are product types in Drupal 7.
    */
   public function testProductVariationType() {
-    $variation_type = ProductVariationType::load('bags_cases');
-    $this->assertNotNull($variation_type);
-    $this->assertEquals($variation_type->label(), 'Bags & Cases');
-    $this->assertFalse($variation_type->shouldGenerateTitle());
-    $this->assertEquals($variation_type->getOrderItemTypeId(), 'default');
+    $this->assertProductVariationTypeEntity('bags_cases', 'Bags & Cases', 'default', FALSE);
   }
 
 }
diff --git a/tests/src/Kernel/d7/Commerce/ProfileBillingTest.php b/tests/src/Kernel/d7/Commerce/ProfileBillingTest.php
index 97239cd..0fbd07e 100644
--- a/tests/src/Kernel/d7/Commerce/ProfileBillingTest.php
+++ b/tests/src/Kernel/d7/Commerce/ProfileBillingTest.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\Tests\commerce_migrate\Kernel\d7\Commerce;
 
-use Drupal\profile\Entity\Profile;
+use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
  * Tests billing profile migration.
@@ -11,8 +11,10 @@ use Drupal\profile\Entity\Profile;
  */
 class ProfileBillingTest extends Commerce1TestBase {
 
+  use CommerceMigrateTestTrait;
+
   /**
-   * @inheritDoc
+   * {@inheritdoc}
    */
   protected function setUp() {
     parent::setUp();
@@ -27,15 +29,10 @@ class ProfileBillingTest extends Commerce1TestBase {
   }
 
   /**
-   * Test profile migration from Drupal 7 to 8.
+   * Test profile migration from Drupal 7 Commerce to Drupal 8.
    */
-  public function testProfile() {
-    $profile = Profile::load(1);
-    $this->assertNotNull($profile);
-    $this->assertEquals($profile->bundle(), 'customer');
-    $this->assertEquals($profile->isActive(), TRUE);
-    $this->assertEquals($profile->getCreatedTime(), 1493287432);
-    $this->assertEquals($profile->getChangedTime(), 1493287432);
+  public function testProfileBilling() {
+    $this->assertBillingProfile(1, '4', TRUE, '1493287432', '1493287432');
   }
 
 }
