diff --git a/webrtc/stats/BUILD.gn b/webrtc/stats/BUILD.gn
index 0f13c10..a9c9fb8 100644
--- a/webrtc/stats/BUILD.gn
+++ b/webrtc/stats/BUILD.gn
@@ -34,8 +34,25 @@
   ]
 }
 
+rtc_source_set("rtc_stats_test_utils") {
+  cflags = []
+  sources = [
+    "test/rtcteststats.cc",
+    "test/rtcteststats.h",
+  ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    ":rtc_stats",
+    "../api:rtc_stats_api",
+  ]
+}
+
 if (rtc_include_tests) {
-  # GYP version: webrtc/stats/stats.gyp:rtc_stats_unittests
   rtc_test("rtc_stats_unittests") {
     testonly = true
     sources = [
@@ -50,6 +67,7 @@
 
     deps = [
       ":rtc_stats",
+      ":rtc_stats_test_utils",
       "../base:rtc_base_tests_utils",
       "../system_wrappers:metrics_default",
       "//testing/gmock",
diff --git a/webrtc/stats/rtcstats_unittest.cc b/webrtc/stats/rtcstats_unittest.cc
index 685093a..6cb8817 100644
--- a/webrtc/stats/rtcstats_unittest.cc
+++ b/webrtc/stats/rtcstats_unittest.cc
@@ -14,58 +14,10 @@
 
 #include "webrtc/base/checks.h"
 #include "webrtc/base/gunit.h"
+#include "webrtc/stats/test/rtcteststats.h"
 
 namespace webrtc {
 
-class RTCTestStats : public RTCStats {
- public:
-  RTCTestStats(const std::string& id, int64_t timestamp_us)
-      : RTCStats(id, timestamp_us),
-        m_int32("mInt32"),
-        m_uint32("mUint32"),
-        m_int64("mInt64"),
-        m_uint64("mUint64"),
-        m_double("mDouble"),
-        m_string("mString"),
-        m_sequence_int32("mSequenceInt32"),
-        m_sequence_uint32("mSequenceUint32"),
-        m_sequence_int64("mSequenceInt64"),
-        m_sequence_uint64("mSequenceUint64"),
-        m_sequence_double("mSequenceDouble"),
-        m_sequence_string("mSequenceString") {
-  }
-
-  WEBRTC_RTCSTATS_IMPL(RTCStats, RTCTestStats,
-      &m_int32,
-      &m_uint32,
-      &m_int64,
-      &m_uint64,
-      &m_double,
-      &m_string,
-      &m_sequence_int32,
-      &m_sequence_uint32,
-      &m_sequence_int64,
-      &m_sequence_uint64,
-      &m_sequence_double,
-      &m_sequence_string);
-
-  RTCStatsMember<int32_t> m_int32;
-  RTCStatsMember<uint32_t> m_uint32;
-  RTCStatsMember<int64_t> m_int64;
-  RTCStatsMember<uint64_t> m_uint64;
-  RTCStatsMember<double> m_double;
-  RTCStatsMember<std::string> m_string;
-
-  RTCStatsMember<std::vector<int32_t>> m_sequence_int32;
-  RTCStatsMember<std::vector<uint32_t>> m_sequence_uint32;
-  RTCStatsMember<std::vector<int64_t>> m_sequence_int64;
-  RTCStatsMember<std::vector<uint64_t>> m_sequence_uint64;
-  RTCStatsMember<std::vector<double>> m_sequence_double;
-  RTCStatsMember<std::vector<std::string>> m_sequence_string;
-};
-
-const char RTCTestStats::kType[] = "test-stats";
-
 class RTCChildStats : public RTCStats {
  public:
   RTCChildStats(const std::string& id, int64_t timestamp_us)
diff --git a/webrtc/stats/test/rtcteststats.cc b/webrtc/stats/test/rtcteststats.cc
new file mode 100644
index 0000000..c317294
--- /dev/null
+++ b/webrtc/stats/test/rtcteststats.cc
@@ -0,0 +1,33 @@
+/*
+ *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/stats/test/rtcteststats.h"
+
+namespace webrtc {
+
+const char RTCTestStats::kType[] = "test-stats";
+
+RTCTestStats::RTCTestStats(const std::string& id, int64_t timestamp_us)
+    : RTCStats(id, timestamp_us),
+      m_int32("mInt32"),
+      m_uint32("mUint32"),
+      m_int64("mInt64"),
+      m_uint64("mUint64"),
+      m_double("mDouble"),
+      m_string("mString"),
+      m_sequence_int32("mSequenceInt32"),
+      m_sequence_uint32("mSequenceUint32"),
+      m_sequence_int64("mSequenceInt64"),
+      m_sequence_uint64("mSequenceUint64"),
+      m_sequence_double("mSequenceDouble"),
+      m_sequence_string("mSequenceString") {
+}
+
+}  // namespace webrtc
diff --git a/webrtc/stats/test/rtcteststats.h b/webrtc/stats/test/rtcteststats.h
new file mode 100644
index 0000000..c8191eb
--- /dev/null
+++ b/webrtc/stats/test/rtcteststats.h
@@ -0,0 +1,55 @@
+/*
+ *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_STATS_TEST_RTCTESTSTATS_H_
+#define WEBRTC_STATS_TEST_RTCTESTSTATS_H_
+
+#include <string>
+#include <vector>
+
+#include "webrtc/api/stats/rtcstats.h"
+
+namespace webrtc {
+
+class RTCTestStats : public RTCStats {
+ public:
+  RTCTestStats(const std::string& id, int64_t timestamp_us);
+
+  WEBRTC_RTCSTATS_IMPL(RTCStats, RTCTestStats,
+      &m_int32,
+      &m_uint32,
+      &m_int64,
+      &m_uint64,
+      &m_double,
+      &m_string,
+      &m_sequence_int32,
+      &m_sequence_uint32,
+      &m_sequence_int64,
+      &m_sequence_uint64,
+      &m_sequence_double,
+      &m_sequence_string);
+
+  RTCStatsMember<int32_t> m_int32;
+  RTCStatsMember<uint32_t> m_uint32;
+  RTCStatsMember<int64_t> m_int64;
+  RTCStatsMember<uint64_t> m_uint64;
+  RTCStatsMember<double> m_double;
+  RTCStatsMember<std::string> m_string;
+  RTCStatsMember<std::vector<int32_t>> m_sequence_int32;
+  RTCStatsMember<std::vector<uint32_t>> m_sequence_uint32;
+  RTCStatsMember<std::vector<int64_t>> m_sequence_int64;
+  RTCStatsMember<std::vector<uint64_t>> m_sequence_uint64;
+  RTCStatsMember<std::vector<double>> m_sequence_double;
+  RTCStatsMember<std::vector<std::string>> m_sequence_string;
+};
+
+}  // namespace webrtc
+
+#endif  // WEBRTC_STATS_TEST_RTCTESTSTATS_H_
