diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationHealthCheckIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationHealthCheckIT.java
index 84c8525..95aa8b1 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationHealthCheckIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationHealthCheckIT.java
@@ -197,7 +197,7 @@
 
     waitUntil(
         () -> {
-          boolean healthCheckPassed = healthcheck.run().result == HealthCheck.Result.PASSED;
+          boolean healthCheckPassed = healthcheck.run().result() == HealthCheck.Result.PASSED;
           boolean replicationFinished = hasReplicationFinished();
           if (!replicationFinished) {
             assertWithMessage("Instance reported healthy while waiting for replication to finish")
@@ -215,12 +215,12 @@
         });
 
     if (testStartStopwatch.elapsed(TimeUnit.SECONDS) < TEST_HEALTHCHECK_PERIOD_OF_TIME_SEC) {
-      assertThat(healthcheck.run().result).isEqualTo(HealthCheck.Result.FAILED);
+      assertThat(healthcheck.run().result()).isEqualTo(HealthCheck.Result.FAILED);
     }
 
     waitUntil(
         () -> testStartStopwatch.elapsed(TimeUnit.SECONDS) > TEST_HEALTHCHECK_PERIOD_OF_TIME_SEC);
-    assertThat(healthcheck.run().result).isEqualTo(HealthCheck.Result.PASSED);
+    assertThat(healthcheck.run().result()).isEqualTo(HealthCheck.Result.PASSED);
   }
 
   private boolean hasReplicationFinished() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java
index d06c9ea..f2a090b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/health/PullReplicationTasksHealthCheckTest.java
@@ -165,7 +165,7 @@
     PullReplicationTasksHealthCheck check =
         injector.getInstance(PullReplicationTasksHealthCheck.class);
 
-    assertThat(check.run().result).isEqualTo(HealthCheck.Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(HealthCheck.Result.FAILED);
   }
 
   @Test
@@ -177,7 +177,7 @@
     PullReplicationTasksHealthCheck check =
         injector.getInstance(PullReplicationTasksHealthCheck.class);
 
-    assertThat(check.run().result).isEqualTo(HealthCheck.Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(HealthCheck.Result.PASSED);
   }
 
   @Test
@@ -197,7 +197,7 @@
                 () -> fakeTicker.advance(Duration.ofMillis(periodOfTimeMillis))))
         .containsExactly(HealthCheck.Result.FAILED, HealthCheck.Result.PASSED);
 
-    assertThat(check.run().result).isEqualTo(HealthCheck.Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(HealthCheck.Result.PASSED);
   }
 
   private Injector testInjector(AbstractModule testModule) {
@@ -222,7 +222,7 @@
       int nTimes, PullReplicationTasksHealthCheck check, @Nullable Runnable postRunFunc) {
     List<HealthCheck.Result> results = new ArrayList<>();
     for (int i = 0; i < nTimes; i++) {
-      results.add(check.run().result);
+      results.add(check.run().result());
       if (postRunFunc != null) {
         postRunFunc.run();
       }
