diff --git a/BUILD.gn b/BUILD.gn
index bb7dfc4..a3e4bf8 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -2,12 +2,15 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/ui.gni")
+
 # This target will be built if no target is specified when invoking ninja.
 group("default") {
   testonly = true
 
   deps = [
     "//apps",
+    "//benchmarks",
     "//crypto:crypto_unittests",
     "//examples",
     "//mojo",
@@ -18,7 +21,7 @@
     "//ui/events:events_unittests",
   ]
 
-  if (!is_android && !is_win) {
+  if (!is_android) {
     deps += [ "//tools/xdisplaycheck" ]
   }
 
@@ -26,6 +29,13 @@
     deps += [ "//sandbox/linux:sandbox" ]
     deps += [ "//sandbox/linux:sandbox_linux_unittests" ]
   }
+
+  if (use_ozone) {
+    deps += [
+      "//ui/ozone",
+      "//ui/ozone/demo",
+    ]
+  }
 }
 
 # Deprecated name for the default build target.
diff --git a/mojo/BUILD.gn b/mojo/BUILD.gn
index bbfa7ea..ddc7176 100644
--- a/mojo/BUILD.gn
+++ b/mojo/BUILD.gn
@@ -2,11 +2,9 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//build/config/ui.gni")
 import("//build/module_args/mojo.gni")
 import("//mojo/public/mojo.gni")
 
-# TODO(beng): this meta target should probably move to the root dir's BUILD.gn.
 group("mojo") {
   # Meta-target, don't link into production code.
   testonly = true
@@ -18,13 +16,10 @@
   }
   deps = [
     ":tests",
-    "//benchmarks",
-    "//examples",
     "//mojo/common",
     "//mojo/dart",
     "//mojo/public",
     "//mojo/services",
-    "//services",
   ]
 
   if (is_android) {
@@ -50,13 +45,6 @@
       "//mojo/nacl:mojo_nacl_tests",
     ]
   }
-
-  if (use_ozone) {
-    deps += [
-      "//ui/ozone",
-      "//ui/ozone/demo",
-    ]
-  }
 }
 
 group("tests") {
@@ -71,41 +59,14 @@
     "//mojo/services/view_manager/public/cpp/tests:mojo_view_manager_lib_unittests",
     "//mojo/tests:mojo_task_tracker_perftests",
     "//mojo/tools:message_generator",
-    "//services/asset_bundle:apptests",
-    "//services/clipboard:apptests",
-    "//services/dart/dart_apptests",
-    "//services/files:apptests",
     "//mojo/gpu:apptests",
     "//mojo/services/files/public/c:apptests",
-    "//services/authenticating_url_loader_interceptor:apptests",
-    "//services/http_server:apptests",
-    "//services/prediction:apptests",
-    "//services/reaper:tests",
-    "//services/url_response_disk_cache:tests",
-    "//services/view_manager:mojo_view_manager_client_apptests",
-    "//services/view_manager:view_manager_service_apptests",
-    "//services/view_manager:view_manager_service_unittests",
-    "//services/window_manager:window_manager_apptests",
-    "//services/window_manager:window_manager_unittests",
-    "//shell:apptests",
   ]
 
-  if (is_linux) {
-    deps += [ "//services/python:python_apptests" ]
-  }
-
-  if (is_android) {
-    deps += [ "//services/notifications:apptests" ]
-  }
-
   # TODO(jamesr): We only support building V8 snapshot data on a linux host since it
   # needs a 32 bit toolchain and we don't have one configured for mac hosts.
   if (host_os == "linux") {
-    deps += [
-      "//mojo/edk/js:tests",
-      "//services/js:js_apptests",
-      "//services/js:js_services_unittests",
-    ]
+    deps += [ "//mojo/edk/js:tests" ]
   }
 
   if (mojo_use_prebuilt_network_service) {
diff --git a/services/BUILD.gn b/services/BUILD.gn
index a6e68ce..129561b 100644
--- a/services/BUILD.gn
+++ b/services/BUILD.gn
@@ -3,7 +3,10 @@
 # found in the LICENSE file.
 
 group("services") {
+  testonly = true
+
   deps = [
+    ":tests",
     "//services/asset_bundle",
     "//services/authenticating_url_loader_interceptor",
     "//services/authentication",
@@ -48,9 +51,48 @@
     deps += [ "//services/python" ]
   }
 
+  # TODO(jamesr): We only support building V8 snapshot data on a linux host
+  # since it needs a 32 bit toolchain and we don't have one configured for mac
+  # hosts.
+  if (host_os == "linux") {
+    deps += [ "//services/js" ]
+  }
+}
+
+group("tests") {
+  testonly = true
+
+  deps = [
+    "//services/asset_bundle:apptests",
+    "//services/authenticating_url_loader_interceptor:apptests",
+    "//services/clipboard:apptests",
+    "//services/dart/dart_apptests",
+    "//services/files:apptests",
+    "//services/http_server:apptests",
+    "//services/prediction:apptests",
+    "//services/reaper:tests",
+    "//services/url_response_disk_cache:tests",
+    "//services/view_manager:mojo_view_manager_client_apptests",
+    "//services/view_manager:view_manager_service_apptests",
+    "//services/view_manager:view_manager_service_unittests",
+    "//services/window_manager:window_manager_apptests",
+    "//services/window_manager:window_manager_unittests",
+  ]
+
+  if (is_linux) {
+    deps += [ "//services/python:python_apptests" ]
+  }
+
+  if (is_android) {
+    deps += [ "//services/notifications:apptests" ]
+  }
+
   # TODO(jamesr): We only support building V8 snapshot data on a linux host since it
   # needs a 32 bit toolchain and we don't have one configured for mac hosts.
   if (host_os == "linux") {
-    deps += [ "//services/js" ]
+    deps += [
+      "//services/js:js_apptests",
+      "//services/js:js_services_unittests",
+    ]
   }
 }
diff --git a/shell/BUILD.gn b/shell/BUILD.gn
index 383dda5..e0e7919 100644
--- a/shell/BUILD.gn
+++ b/shell/BUILD.gn
@@ -33,6 +33,7 @@
 group("tests") {
   testonly = true
   deps = [
+    ":apptests",
     ":mojo_shell_tests",
     ":shell_nfc_apptests",
     "//shell/application_manager:mojo_application_manager_unittests",
