diff --git a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/LockTest.java b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/LockTest.java
index f9f691c..988b32b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/LockTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/LockTest.java
@@ -101,7 +101,7 @@
   @Test
   public void reclaimStaleLockedRef_Success() throws Exception {
     Timestamp staleTimestamp = Timestamp.ofTimeSecondsAndNanos(0, 0);
-    insertLockRow(staleTimestamp);
+    insertLockRow(PROJECT_NAME_KEY, REF_NAME, staleTimestamp);
     try (AutoCloseable refLock = refDb.lockRef(PROJECT_NAME_KEY, REF_NAME)) {
       Timestamp newLockToken = getLockTimestamp(PROJECT_NAME_KEY, REF_NAME, TOKEN);
       assertThat(newLockToken).isNotNull();
@@ -112,7 +112,7 @@
   @Test
   public void reclaimFreshLockedRef_Rejected() throws Exception {
     Timestamp freshTimestamp = Timestamp.now();
-    insertLockRow(freshTimestamp);
+    insertLockRow(PROJECT_NAME_KEY, REF_NAME, freshTimestamp);
     GlobalRefDbLockException e =
         assertThrows(
             GlobalRefDbLockException.class, () -> refDb.lockRef(PROJECT_NAME_KEY, REF_NAME));
@@ -141,7 +141,7 @@
     ExecutorService pool = Executors.newFixedThreadPool(2);
 
     for (int i = 0; i < 10; i++) {
-      insertLockRow(staleTimestamp);
+      insertLockRow(PROJECT_NAME_KEY, REF_NAME, staleTimestamp);
       Future<Boolean> f1 = pool.submit(() -> tryLockAwaitBarrier(cyclicBarrier));
       Future<Boolean> f2 = pool.submit(() -> tryLockAwaitBarrier(cyclicBarrier));
       assertThat(f1.get()).isNotEqualTo(f2.get());
@@ -170,13 +170,13 @@
         .readRow("locks", Key.of(project.get(), refName), Arrays.asList(TOKEN, HEARTBEAT));
   }
 
-  private void insertLockRow(Timestamp timestamp) {
+  private void insertLockRow(Project.NameKey project, String refName, Timestamp timestamp) {
     Mutation insertLock =
         Mutation.newInsertBuilder("locks")
             .set("project")
-            .to(PROJECT_NAME_KEY.get())
+            .to(project.get())
             .set("ref")
-            .to(REF_NAME)
+            .to(refName)
             .set("heartbeat")
             .to(timestamp)
             .set("token")
