diff --git a/BUILD.gn b/BUILD.gn
index ca2f5e5..52c9e50 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1088,7 +1088,6 @@
     "src/writer/hlsl/generator_impl_unary_op_test.cc",
     "src/writer/hlsl/generator_impl_variable_decl_statement_test.cc",
     "src/writer/hlsl/namer_test.cc",
-    "src/writer/hlsl/test_helper.cc",
     "src/writer/hlsl/test_helper.h",
   ]
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1451fb9..99ea14a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -599,7 +599,6 @@
     writer/hlsl/generator_impl_unary_op_test.cc
     writer/hlsl/generator_impl_variable_decl_statement_test.cc
     writer/hlsl/namer_test.cc
-    writer/hlsl/test_helper.cc
     writer/hlsl/test_helper.h
   )
 endif()
diff --git a/src/writer/hlsl/generator_impl_alias_type_test.cc b/src/writer/hlsl/generator_impl_alias_type_test.cc
index c68de9f..703ac3b 100644
--- a/src/writer/hlsl/generator_impl_alias_type_test.cc
+++ b/src/writer/hlsl/generator_impl_alias_type_test.cc
@@ -27,8 +27,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_AliasType : public TestHelper,
-                                        public testing::Test {};
+using HlslGeneratorImplTest_AliasType = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_AliasType, EmitAliasType_F32) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_array_accessor_test.cc b/src/writer/hlsl/generator_impl_array_accessor_test.cc
index ce7371d..0462efe 100644
--- a/src/writer/hlsl/generator_impl_array_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_array_accessor_test.cc
@@ -27,8 +27,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Expression : public TestHelper,
-                                         public testing::Test {};
+using HlslGeneratorImplTest_Expression = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Expression, EmitExpression_ArrayAccessor) {
   ast::type::I32Type i32;
diff --git a/src/writer/hlsl/generator_impl_as_test.cc b/src/writer/hlsl/generator_impl_as_test.cc
index 710b57e..7eb334d 100644
--- a/src/writer/hlsl/generator_impl_as_test.cc
+++ b/src/writer/hlsl/generator_impl_as_test.cc
@@ -27,7 +27,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_As : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_As = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_As, EmitExpression_As_Float) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_assign_test.cc b/src/writer/hlsl/generator_impl_assign_test.cc
index 5781d97..c366717 100644
--- a/src/writer/hlsl/generator_impl_assign_test.cc
+++ b/src/writer/hlsl/generator_impl_assign_test.cc
@@ -25,7 +25,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Assign : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Assign = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Assign, Emit_Assign) {
   auto lhs = std::make_unique<ast::IdentifierExpression>("lhs");
diff --git a/src/writer/hlsl/generator_impl_binary_test.cc b/src/writer/hlsl/generator_impl_binary_test.cc
index 717148a..2da3ad9 100644
--- a/src/writer/hlsl/generator_impl_binary_test.cc
+++ b/src/writer/hlsl/generator_impl_binary_test.cc
@@ -33,8 +33,7 @@
   return out;
 }
 
-class HlslBinaryTest : public TestHelper,
-                       public testing::TestWithParam<BinaryData> {};
+using HlslBinaryTest = TestHelperBase<testing::TestWithParam<BinaryData>>;
 TEST_P(HlslBinaryTest, Emit) {
   auto params = GetParam();
 
diff --git a/src/writer/hlsl/generator_impl_block_test.cc b/src/writer/hlsl/generator_impl_block_test.cc
index 1d44592..fd309e7 100644
--- a/src/writer/hlsl/generator_impl_block_test.cc
+++ b/src/writer/hlsl/generator_impl_block_test.cc
@@ -23,7 +23,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Block : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Block = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Block, Emit_Block) {
   ast::BlockStatement b;
diff --git a/src/writer/hlsl/generator_impl_break_test.cc b/src/writer/hlsl/generator_impl_break_test.cc
index eafd188..7185ca9 100644
--- a/src/writer/hlsl/generator_impl_break_test.cc
+++ b/src/writer/hlsl/generator_impl_break_test.cc
@@ -24,7 +24,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Break : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Break = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Break, Emit_Break) {
   ast::BreakStatement b;
diff --git a/src/writer/hlsl/generator_impl_call_test.cc b/src/writer/hlsl/generator_impl_call_test.cc
index 3405d1b..cbff0a8 100644
--- a/src/writer/hlsl/generator_impl_call_test.cc
+++ b/src/writer/hlsl/generator_impl_call_test.cc
@@ -27,7 +27,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Call : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Call = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Call, EmitExpression_Call_WithoutParams) {
   ast::type::VoidType void_type;
diff --git a/src/writer/hlsl/generator_impl_case_test.cc b/src/writer/hlsl/generator_impl_case_test.cc
index 05d06c3..c0330b9 100644
--- a/src/writer/hlsl/generator_impl_case_test.cc
+++ b/src/writer/hlsl/generator_impl_case_test.cc
@@ -28,7 +28,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Case : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Case = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case) {
   ast::type::I32Type i32;
diff --git a/src/writer/hlsl/generator_impl_cast_test.cc b/src/writer/hlsl/generator_impl_cast_test.cc
index 1e782b3..723f374 100644
--- a/src/writer/hlsl/generator_impl_cast_test.cc
+++ b/src/writer/hlsl/generator_impl_cast_test.cc
@@ -26,7 +26,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Cast : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Cast = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Cast, EmitExpression_Cast_Scalar) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_constructor_test.cc b/src/writer/hlsl/generator_impl_constructor_test.cc
index f9b2b2b..6e3ef5e 100644
--- a/src/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/writer/hlsl/generator_impl_constructor_test.cc
@@ -33,8 +33,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Constructor : public TestHelper,
-                                          public testing::Test {};
+using HlslGeneratorImplTest_Constructor = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Bool) {
   ast::type::BoolType bool_type;
diff --git a/src/writer/hlsl/generator_impl_continue_test.cc b/src/writer/hlsl/generator_impl_continue_test.cc
index 97b4ae0..170b7f7 100644
--- a/src/writer/hlsl/generator_impl_continue_test.cc
+++ b/src/writer/hlsl/generator_impl_continue_test.cc
@@ -24,8 +24,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Continue : public TestHelper,
-                                       public testing::Test {};
+using HlslGeneratorImplTest_Continue = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Continue, Emit_Continue) {
   ast::ContinueStatement c;
diff --git a/src/writer/hlsl/generator_impl_discard_test.cc b/src/writer/hlsl/generator_impl_discard_test.cc
index bbd4383..8bf84fd 100644
--- a/src/writer/hlsl/generator_impl_discard_test.cc
+++ b/src/writer/hlsl/generator_impl_discard_test.cc
@@ -21,8 +21,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Discard : public TestHelper,
-                                      public testing::Test {};
+using HlslGeneratorImplTest_Discard = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Discard, Emit_Discard) {
   ast::DiscardStatement stmt;
diff --git a/src/writer/hlsl/generator_impl_entry_point_test.cc b/src/writer/hlsl/generator_impl_entry_point_test.cc
index 189c2ab..ad99c2e 100644
--- a/src/writer/hlsl/generator_impl_entry_point_test.cc
+++ b/src/writer/hlsl/generator_impl_entry_point_test.cc
@@ -34,8 +34,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_EntryPoint : public TestHelper,
-                                         public testing::Test {};
+using HlslGeneratorImplTest_EntryPoint = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_EntryPoint, EmitEntryPointData_Vertex_Input) {
   // [[location 0]] var<in> foo : f32;
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index d79394b..1546ddb 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -48,8 +48,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Function : public TestHelper,
-                                       public testing::Test {};
+using HlslGeneratorImplTest_Function = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Function, Emit_Function) {
   ast::type::VoidType void_type;
diff --git a/src/writer/hlsl/generator_impl_identifier_test.cc b/src/writer/hlsl/generator_impl_identifier_test.cc
index cdd99e7..58b5ed3 100644
--- a/src/writer/hlsl/generator_impl_identifier_test.cc
+++ b/src/writer/hlsl/generator_impl_identifier_test.cc
@@ -21,8 +21,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Identifier : public TestHelper,
-                                         public testing::Test {};
+using HlslGeneratorImplTest_Identifier = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Identifier, DISABLED_EmitExpression_Identifier) {
   ast::IdentifierExpression i(std::vector<std::string>{"std", "glsl"});
diff --git a/src/writer/hlsl/generator_impl_if_test.cc b/src/writer/hlsl/generator_impl_if_test.cc
index cfdc393..df2a7d6 100644
--- a/src/writer/hlsl/generator_impl_if_test.cc
+++ b/src/writer/hlsl/generator_impl_if_test.cc
@@ -24,7 +24,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_If : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_If = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_If, Emit_If) {
   auto cond = std::make_unique<ast::IdentifierExpression>("cond");
diff --git a/src/writer/hlsl/generator_impl_import_test.cc b/src/writer/hlsl/generator_impl_import_test.cc
index a6c5631..b97859d 100644
--- a/src/writer/hlsl/generator_impl_import_test.cc
+++ b/src/writer/hlsl/generator_impl_import_test.cc
@@ -36,7 +36,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Import : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Import = TestHelper;
 
 struct HlslImportData {
   const char* name;
@@ -47,9 +47,8 @@
   return out;
 }
 
-class HlslImportData_SingleParamTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_SingleParamTest =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_SingleParamTest, FloatScalar) {
   auto param = GetParam();
 
@@ -113,9 +112,8 @@
   FAIL();
 }
 
-class HlslImportData_SingleIntParamTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_SingleIntParamTest =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_SingleIntParamTest, IntScalar) {
   auto param = GetParam();
 
@@ -140,9 +138,8 @@
                          testing::Values(HlslImportData{"sabs", "abs"},
                                          HlslImportData{"ssign", "sign"}));
 
-class HlslImportData_DualParamTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_DualParamTest =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_DualParamTest, FloatScalar) {
   auto param = GetParam();
 
@@ -177,9 +174,8 @@
                                          HlslImportData{"reflect", "reflect"},
                                          HlslImportData{"step", "step"}));
 
-class HlslImportData_DualParam_VectorTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_DualParam_VectorTest =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_DualParam_VectorTest, FloatVector) {
   auto param = GetParam();
 
@@ -224,9 +220,8 @@
                          HlslImportData_DualParam_VectorTest,
                          testing::Values(HlslImportData{"cross", "cross"}));
 
-class HlslImportData_DualParam_Int_Test
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_DualParam_Int_Test =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_DualParam_Int_Test, IntScalar) {
   auto param = GetParam();
 
@@ -255,9 +250,8 @@
                                          HlslImportData{"umax", "max"},
                                          HlslImportData{"umin", "min"}));
 
-class HlslImportData_TripleParamTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_TripleParamTest =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_TripleParamTest, FloatScalar) {
   auto param = GetParam();
 
@@ -295,9 +289,8 @@
   FAIL();
 }
 
-class HlslImportData_TripleParam_Int_Test
-    : public TestHelper,
-      public testing::TestWithParam<HlslImportData> {};
+using HlslImportData_TripleParam_Int_Test =
+    TestHelperBase<testing::TestWithParam<HlslImportData>>;
 TEST_P(HlslImportData_TripleParam_Int_Test, IntScalar) {
   auto param = GetParam();
 
diff --git a/src/writer/hlsl/generator_impl_intrinsic_test.cc b/src/writer/hlsl/generator_impl_intrinsic_test.cc
index 845628e..f862ba7 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_test.cc
@@ -26,8 +26,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Intrinsic : public TestHelper,
-                                        public testing::Test {};
+using HlslGeneratorImplTest_Intrinsic = TestHelper;
 
 struct IntrinsicData {
   const char* name;
@@ -37,8 +36,7 @@
   out << data.name;
   return out;
 }
-class HlslIntrinsicTest : public TestHelper,
-                          public testing::TestWithParam<IntrinsicData> {};
+using HlslIntrinsicTest = TestHelperBase<testing::TestWithParam<IntrinsicData>>;
 TEST_P(HlslIntrinsicTest, Emit) {
   auto param = GetParam();
   EXPECT_EQ(gen().generate_intrinsic_name(param.name), param.hlsl_name);
diff --git a/src/writer/hlsl/generator_impl_loop_test.cc b/src/writer/hlsl/generator_impl_loop_test.cc
index 8a92b1c..54d600e 100644
--- a/src/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/writer/hlsl/generator_impl_loop_test.cc
@@ -31,7 +31,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Loop : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Loop = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Loop, Emit_Loop) {
   auto body = std::make_unique<ast::BlockStatement>();
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index 8eec27a..ccfe26a 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -43,8 +43,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_MemberAccessor : public TestHelper,
-                                             public testing::Test {};
+using HlslGeneratorImplTest_MemberAccessor = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_MemberAccessor, EmitExpression_MemberAccessor) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_module_constant_test.cc b/src/writer/hlsl/generator_impl_module_constant_test.cc
index d787c23..abad8ea 100644
--- a/src/writer/hlsl/generator_impl_module_constant_test.cc
+++ b/src/writer/hlsl/generator_impl_module_constant_test.cc
@@ -29,8 +29,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_ModuleConstant : public TestHelper,
-                                             public testing::Test {};
+using HlslGeneratorImplTest_ModuleConstant = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_ModuleConstant, Emit_ModuleConstant) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_return_test.cc b/src/writer/hlsl/generator_impl_return_test.cc
index 2662bd2..d3b785a 100644
--- a/src/writer/hlsl/generator_impl_return_test.cc
+++ b/src/writer/hlsl/generator_impl_return_test.cc
@@ -25,7 +25,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Return : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Return = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Return, Emit_Return) {
   ast::ReturnStatement r;
diff --git a/src/writer/hlsl/generator_impl_switch_test.cc b/src/writer/hlsl/generator_impl_switch_test.cc
index 3b0b5bf..c8e7771 100644
--- a/src/writer/hlsl/generator_impl_switch_test.cc
+++ b/src/writer/hlsl/generator_impl_switch_test.cc
@@ -28,7 +28,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Switch : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Switch = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Switch, Emit_Switch) {
   auto def = std::make_unique<ast::CaseStatement>();
diff --git a/src/writer/hlsl/generator_impl_test.cc b/src/writer/hlsl/generator_impl_test.cc
index 5ddbeb0..22fa5d7 100644
--- a/src/writer/hlsl/generator_impl_test.cc
+++ b/src/writer/hlsl/generator_impl_test.cc
@@ -26,7 +26,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest = TestHelper;
 
 TEST_F(HlslGeneratorImplTest, DISABLED_Generate) {
   ast::type::VoidType void_type;
@@ -71,9 +71,8 @@
   out << data.builtin;
   return out;
 }
-class HlslBuiltinConversionTest
-    : public TestHelper,
-      public testing::TestWithParam<HlslBuiltinData> {};
+using HlslBuiltinConversionTest =
+    TestHelperBase<testing::TestWithParam<HlslBuiltinData>>;
 TEST_P(HlslBuiltinConversionTest, Emit) {
   auto params = GetParam();
   EXPECT_EQ(gen().builtin_to_attribute(params.builtin),
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 96c464b..4a5b76d 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -35,7 +35,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_Type : public TestHelper, public testing::Test {};
+using HlslGeneratorImplTest_Type = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Type, EmitType_Alias) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/generator_impl_unary_op_test.cc b/src/writer/hlsl/generator_impl_unary_op_test.cc
index ae76942..6e97786 100644
--- a/src/writer/hlsl/generator_impl_unary_op_test.cc
+++ b/src/writer/hlsl/generator_impl_unary_op_test.cc
@@ -33,8 +33,7 @@
   out << data.op;
   return out;
 }
-class HlslUnaryOpTest : public TestHelper,
-                        public testing::TestWithParam<UnaryOpData> {};
+using HlslUnaryOpTest = TestHelperBase<testing::TestWithParam<UnaryOpData>>;
 TEST_P(HlslUnaryOpTest, Emit) {
   auto params = GetParam();
 
diff --git a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
index bef692f..f18e466 100644
--- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
@@ -30,8 +30,7 @@
 namespace hlsl {
 namespace {
 
-class HlslGeneratorImplTest_VariableDecl : public TestHelper,
-                                           public testing::Test {};
+using HlslGeneratorImplTest_VariableDecl = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_VariableDecl, Emit_VariableDeclStatement) {
   ast::type::F32Type f32;
diff --git a/src/writer/hlsl/test_helper.cc b/src/writer/hlsl/test_helper.cc
deleted file mode 100644
index 7e5fc6f..0000000
--- a/src/writer/hlsl/test_helper.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2020 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "src/writer/hlsl/test_helper.h"
-
-namespace tint {
-namespace writer {
-namespace hlsl {
-
-TestHelper::TestHelper() : td_(&ctx_, &mod_), impl_(&mod_) {}
-
-TestHelper::~TestHelper() = default;
-
-}  // namespace hlsl
-}  // namespace writer
-}  // namespace tint
diff --git a/src/writer/hlsl/test_helper.h b/src/writer/hlsl/test_helper.h
index a8eceed..68fa0e3 100644
--- a/src/writer/hlsl/test_helper.h
+++ b/src/writer/hlsl/test_helper.h
@@ -28,10 +28,11 @@
 namespace hlsl {
 
 /// Helper class for testing
-class TestHelper {
+template <typename T>
+class TestHelperBase : public T {
  public:
-  TestHelper();
-  ~TestHelper();
+  TestHelperBase() : td_(&ctx_, &mod_), impl_(&mod_) {}
+  ~TestHelperBase() = default;
 
   /// @returns the generator implementation
   GeneratorImpl& gen() { return impl_; }
@@ -55,6 +56,7 @@
   GeneratorImpl impl_;
   std::ostringstream out_;
 };
+using TestHelper = TestHelperBase<testing::Test>;
 
 }  // namespace hlsl
 }  // namespace writer
