diff --git a/BUILD b/BUILD
index d2d5e7d..01d9a2f 100644
--- a/BUILD
+++ b/BUILD
@@ -24,15 +24,28 @@
 
 junit_tests(
     name = "spanner-refdb_tests",
-    srcs = glob(["src/test/java/**/*.java"]),
+    srcs = glob(["src/test/java/**/*Test.java"]),
     resources = glob(["src/main/resources/**/*"]),
     tags = ["spanner-refdb"],
     deps = [
+        ":spanner-refdb_test_util",
         ":spanner-refdb__plugin_test_deps",
     ],
 )
 
 java_library(
+    name = "spanner-refdb_test_util",
+    testonly = True,
+    srcs = glob(
+        ["src/test/java/**/*.java"],
+        exclude = ["src/test/java/**/*Test.java"],
+    ),
+    deps = [
+        ":spanner-refdb__plugin_test_deps",
+    ]
+)
+
+java_library(
     name = "spanner-refdb__plugin_test_deps",
     testonly = 1,
     visibility = ["//visibility:public"],
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index a816e2b..5f33214 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -41,11 +41,11 @@
 
 In this case we have to provide an GCP service account key and the instance name
 under which the test refdb will be created. This is done by passing two
-environment variables `SERVICE_ACCOUNT_KEY_PATH` and `SPANNER_INSTANCE`:
+environment variables `GOOGLE_APPLICATION_CREDENTIALS` and `SPANNER_INSTANCE`:
 
 ```
 bazelisk test \
-  --test_env='SERVICE_ACCOUNT_KEY_PATH=/path/to/the/key.json' \
+  --test_env='GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/key.json' \
   --test_env='SPANNER_INSTANCE=test-instance' \
   --test_tag_filters=@PLUGIN@ //...
 ```
@@ -55,7 +55,7 @@
 
 ```
 bazelisk test \
-  --test_env='SERVICE_ACCOUNT_KEY_PATH=/path/to/the/key.json' \
+  --test_env='GOOGLE_APPLICATION_CREDENTIALS=/path/to/the/key.json' \
   --test_env='SPANNER_INSTANCE=test-instance' \
   //plugins/@PLUGIN@/...
 ```
@@ -66,12 +66,12 @@
 the tests. A container running spanner will be created automatically by the
 tests.
 
-The absence of the `SERVICE_ACCOUNT_KEY_PATH` env variable means that the tests
+The absence of the `GOOGLE_APPLICATION_CREDENTIALS` env variable means that the tests
 will create local spanner emulator.
 
 ```
 bazelisk test //plugins/@PLUGIN@/...
-
+```
 
 ### MacOS specifics when using docker based spanner emulator
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
index 20d6973..5ecfcc7 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java
@@ -30,11 +30,9 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import org.junit.Ignore;
 import org.testcontainers.containers.SpannerEmulatorContainer;
 import org.testcontainers.utility.DockerImageName;
 
-@Ignore
 public class EmulatedSpannerRefDb extends SpannerTestSystem {
   public static final String PROJECT_ID = "test";
   public static final String SPANNER_INSTANCE_ID = "spanner-instance";
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RealSpannerRefDb.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RealSpannerRefDb.java
index 48f57dd..499ac57 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RealSpannerRefDb.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RealSpannerRefDb.java
@@ -28,16 +28,14 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import org.junit.Ignore;
 
-@Ignore
 public class RealSpannerRefDb extends SpannerTestSystem {
 
   private static RealSpannerRefDb INSTANCE;
 
   public static RealSpannerRefDb create() {
     if (INSTANCE == null) {
-      String keyPath = System.getenv("SERVICE_ACCOUNT_KEY_PATH");
+      String keyPath = System.getenv("GOOGLE_APPLICATION_CREDENTIALS");
       String instance = System.getenv("SPANNER_INSTANCE");
       INSTANCE = new RealSpannerRefDb(keyPath, instance);
     }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RefFixture.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RefFixture.java
index 67e8428..9a0e816 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RefFixture.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/RefFixture.java
@@ -19,9 +19,7 @@
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectIdRef;
 import org.eclipse.jgit.lib.Ref;
-import org.junit.Ignore;
 
-@Ignore
 public interface RefFixture {
   static final String PROJECT_NAME = "A_TEST_PROJECT_NAME";
   static final Project.NameKey PROJECT_NAME_KEY = Project.nameKey(PROJECT_NAME);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerTestSystem.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerTestSystem.java
index aff7407..3eb6d0c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerTestSystem.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerTestSystem.java
@@ -15,14 +15,12 @@
 package com.googlesource.gerrit.plugins.spannerrefdb;
 
 import com.google.cloud.spanner.DatabaseClient;
-import org.junit.Ignore;
 
-@Ignore
 public abstract class SpannerTestSystem {
 
   public static SpannerTestSystem create() throws Exception {
     SpannerTestSystem testSystem;
-    if (System.getenv("SERVICE_ACCOUNT_KEY_PATH") == null) {
+    if (System.getenv("GOOGLE_APPLICATION_CREDENTIALS") == null) {
       testSystem = new EmulatedSpannerRefDb();
     } else {
       testSystem = RealSpannerRefDb.create();
