diff --git a/dbus/end_to_end_async_unittest.cc b/dbus/end_to_end_async_unittest.cc
index 121c660..8f62864 100644
--- a/dbus/end_to_end_async_unittest.cc
+++ b/dbus/end_to_end_async_unittest.cc
@@ -63,7 +63,7 @@
     bus_options.dbus_task_runner = dbus_thread_->task_runner();
     bus_ = new Bus(bus_options);
     object_proxy_ = bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
     ASSERT_TRUE(bus_->HasDBusThread());
 
@@ -97,7 +97,7 @@
     run_loop_->Run();
 
     // Create a second object proxy for the root object.
-    root_object_proxy_ = bus_->GetObjectProxy("org.chromium.TestService",
+    root_object_proxy_ = bus_->GetObjectProxy(test_service_->service_name(),
                                               ObjectPath("/"));
     ASSERT_TRUE(bus_->HasDBusThread());
 
@@ -147,7 +147,7 @@
 
     // Create new object proxy.
     object_proxy_ = bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
   }
 
@@ -435,7 +435,7 @@
 
   // Remove the object proxy before receiving the result.
   // This results in cancelling the pending method call.
-  bus_->RemoveObjectProxy("org.chromium.TestService",
+  bus_->RemoveObjectProxy(test_service_->service_name(),
                           ObjectPath("/org/chromium/TestObject"),
                           base::Bind(&base::DoNothing));
 
@@ -517,7 +517,7 @@
   const ObjectPath invalid_object_path("/org/chromium/TestObject/");
 
   // Replace object proxy with new one.
-  object_proxy_ = bus_->GetObjectProxy("org.chromium.TestService",
+  object_proxy_ = bus_->GetObjectProxy(test_service_->service_name(),
                                        invalid_object_path);
 
   MethodCall method_call("org.chromium.TestInterface", "Echo");
diff --git a/dbus/end_to_end_sync_unittest.cc b/dbus/end_to_end_sync_unittest.cc
index 1167d96..47dc9b1 100644
--- a/dbus/end_to_end_sync_unittest.cc
+++ b/dbus/end_to_end_sync_unittest.cc
@@ -35,7 +35,7 @@
     client_bus_options.connection_type = Bus::PRIVATE;
     client_bus_ = new Bus(client_bus_options);
     object_proxy_ = client_bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
     ASSERT_FALSE(client_bus_->HasDBusThread());
   }
@@ -112,7 +112,7 @@
   const ObjectPath invalid_object_path("/org/chromium/TestObject/");
 
   // Replace object proxy with new one.
-  object_proxy_ = client_bus_->GetObjectProxy("org.chromium.TestService",
+  object_proxy_ = client_bus_->GetObjectProxy(test_service_->service_name(),
                                               invalid_object_path);
 
   MethodCall method_call("org.chromium.TestInterface", "Echo");
diff --git a/dbus/object_manager_unittest.cc b/dbus/object_manager_unittest.cc
index fa83034..443210c 100644
--- a/dbus/object_manager_unittest.cc
+++ b/dbus/object_manager_unittest.cc
@@ -87,7 +87,7 @@
     ASSERT_TRUE(bus_->HasDBusThread());
 
     object_manager_ = bus_->GetObjectManager(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestService"));
     object_manager_->RegisterInterface("org.chromium.TestInterface", this);
 
@@ -189,7 +189,7 @@
 
   void PerformAction(const std::string& action, const ObjectPath& object_path) {
     ObjectProxy* object_proxy = bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
 
     MethodCall method_call("org.chromium.TestInterface", "PerformAction");
@@ -288,7 +288,7 @@
 
 TEST_F(ObjectManagerTest, SameObject) {
   ObjectManager* object_manager = bus_->GetObjectManager(
-      "org.chromium.TestService",
+      test_service_->service_name(),
       ObjectPath("/org/chromium/TestService"));
   EXPECT_EQ(object_manager_, object_manager);
 }
@@ -302,7 +302,7 @@
 
 TEST_F(ObjectManagerTest, DifferentObjectForPath) {
   ObjectManager* object_manager = bus_->GetObjectManager(
-      "org.chromium.TestService",
+      test_service_->service_name(),
       ObjectPath("/org/chromium/DifferentService"));
   EXPECT_NE(object_manager_, object_manager);
 }
@@ -387,7 +387,7 @@
   object_manager_->UnregisterInterface("org.chromium.TestInterface");
   run_loop_.reset(new base::RunLoop);
   EXPECT_TRUE(bus_->RemoveObjectManager(
-      "org.chromium.TestService",
+      test_service_->service_name(),
       ObjectPath("/org/chromium/TestService"),
       run_loop_->QuitClosure()));
   run_loop_->Run();
@@ -396,7 +396,7 @@
                 ObjectPath("/org/chromium/TestService"));
 
   object_manager_ = bus_->GetObjectManager(
-      "org.chromium.TestService",
+      test_service_->service_name(),
       ObjectPath("/org/chromium/TestService"));
   object_manager_->RegisterInterface("org.chromium.TestInterface", this);
 
diff --git a/dbus/object_proxy_unittest.cc b/dbus/object_proxy_unittest.cc
index 22130b6..05c1294 100644
--- a/dbus/object_proxy_unittest.cc
+++ b/dbus/object_proxy_unittest.cc
@@ -20,16 +20,12 @@
     bus_options.bus_type = Bus::SESSION;
     bus_options.connection_type = Bus::PRIVATE;
     bus_ = new Bus(bus_options);
-
-    object_proxy_ = bus_->GetObjectProxy(
-        "org.chromium.TestService", ObjectPath("/org/chromium/TestObject"));
   }
 
   void TearDown() override { bus_->ShutdownAndBlock(); }
 
   base::MessageLoopForIO message_loop_;
   scoped_refptr<Bus> bus_;
-  ObjectProxy* object_proxy_;
 };
 
 // Used as a WaitForServiceToBeAvailableCallback.
@@ -43,14 +39,17 @@
 TEST_F(ObjectProxyTest, WaitForServiceToBeAvailable) {
   scoped_ptr<base::RunLoop> run_loop;
 
+  TestService::Options options;
+  TestService test_service(options);
+
   // Callback is not yet called because the service is not available.
-  object_proxy_->WaitForServiceToBeAvailable(
+  ObjectProxy* object_proxy = bus_->GetObjectProxy(
+      test_service.service_name(), ObjectPath("/org/chromium/TestObject"));
+  object_proxy->WaitForServiceToBeAvailable(
       base::Bind(&OnServiceIsAvailable, &run_loop));
   base::RunLoop().RunUntilIdle();
 
   // Start the service.
-  TestService::Options options;
-  TestService test_service(options);
   ASSERT_TRUE(test_service.StartService());
   ASSERT_TRUE(test_service.WaitUntilServiceIsStarted());
   ASSERT_TRUE(test_service.has_ownership());
@@ -61,7 +60,7 @@
 
   // Callback is called because the service is already available.
   run_loop.reset(new base::RunLoop);
-  object_proxy_->WaitForServiceToBeAvailable(
+  object_proxy->WaitForServiceToBeAvailable(
       base::Bind(&OnServiceIsAvailable, &run_loop));
   run_loop->Run();
 
diff --git a/dbus/property_unittest.cc b/dbus/property_unittest.cc
index b6bbb18..f159284 100644
--- a/dbus/property_unittest.cc
+++ b/dbus/property_unittest.cc
@@ -77,7 +77,7 @@
     bus_options.dbus_task_runner = dbus_thread_->task_runner();
     bus_ = new Bus(bus_options);
     object_proxy_ = bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
     ASSERT_TRUE(bus_->HasDBusThread());
 
diff --git a/dbus/signal_sender_verification_unittest.cc b/dbus/signal_sender_verification_unittest.cc
index 0cedda7..785948a 100644
--- a/dbus/signal_sender_verification_unittest.cc
+++ b/dbus/signal_sender_verification_unittest.cc
@@ -40,6 +40,11 @@
     thread_options.message_loop_type = base::MessageLoop::TYPE_IO;
     ASSERT_TRUE(dbus_thread_->StartWithOptions(thread_options));
 
+    // Create the test service, using the D-Bus thread.
+    TestService::Options options;
+    options.dbus_task_runner = dbus_thread_->task_runner();
+    test_service_.reset(new TestService(options));
+
     // Create the client, using the D-Bus thread.
     Bus::Options bus_options;
     bus_options.bus_type = Bus::SESSION;
@@ -47,7 +52,7 @@
     bus_options.dbus_task_runner = dbus_thread_->task_runner();
     bus_ = new Bus(bus_options);
     object_proxy_ = bus_->GetObjectProxy(
-        "org.chromium.TestService",
+        test_service_->service_name(),
         ObjectPath("/org/chromium/TestObject"));
     ASSERT_TRUE(bus_->HasDBusThread());
 
@@ -69,10 +74,7 @@
     run_loop_.reset(new base::RunLoop);
     run_loop_->Run();
 
-    // Start the test service, using the D-Bus thread.
-    TestService::Options options;
-    options.dbus_task_runner = dbus_thread_->task_runner();
-    test_service_.reset(new TestService(options));
+    // Start the test service.
     ASSERT_TRUE(test_service_->StartService());
     ASSERT_TRUE(test_service_->WaitUntilServiceIsStarted());
     ASSERT_TRUE(test_service_->HasDBusThread());
@@ -80,6 +82,7 @@
 
     // Same setup for the second TestService. This service should not have the
     // ownership of the name at this point.
+    options.service_name = test_service_->service_name();
     test_service2_.reset(new TestService(options));
     ASSERT_TRUE(test_service2_->StartService());
     ASSERT_TRUE(test_service2_->WaitUntilServiceIsStarted());
@@ -280,6 +283,7 @@
   TestService::Options options;
   options.dbus_task_runner = dbus_thread_->task_runner();
   options.request_ownership_options = Bus::REQUIRE_PRIMARY_ALLOW_REPLACEMENT;
+  options.service_name = test_service_->service_name();
   TestService stealable_test_service(options);
   ASSERT_TRUE(stealable_test_service.StartService());
   ASSERT_TRUE(stealable_test_service.WaitUntilServiceIsStarted());
@@ -331,7 +335,7 @@
   const char kMessage[] = "hello, world";
 
   ObjectProxy* object_proxy2 = bus_->GetObjectProxy(
-      "org.chromium.TestService",
+      test_service_->service_name(),
       ObjectPath("/org/chromium/DifferentObject"));
 
   bool second_name_owner_changed_called = false;
