diff --git a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/evaluator/OnPluginLoadUnloadTest.java b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/evaluator/OnPluginLoadUnloadTest.java
index 17f92f2..d56036c 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/evaluator/OnPluginLoadUnloadTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/evaluator/OnPluginLoadUnloadTest.java
@@ -16,7 +16,7 @@
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import com.ericsson.gerrit.plugins.gcconductor.ShutdownNotifier;
 import org.junit.Before;
@@ -36,7 +36,7 @@
   @Test
   public void testStart() {
     onPluginLoadUnload.start();
-    verifyZeroInteractions(shutdownNotifierMock);
+    verifyNoInteractions(shutdownNotifierMock);
   }
 
   @Test
diff --git a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcExecutorTest.java b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcExecutorTest.java
index b3cad54..cb8015d 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcExecutorTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcExecutorTest.java
@@ -19,7 +19,7 @@
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import com.ericsson.gerrit.plugins.gcconductor.GcQueue;
@@ -150,7 +150,7 @@
     GcExecutor gcExecutor =
         new GcExecutor(gcQueue, config, gcWorkerFactory, scheduledEvaluator, HOSTNAME);
     verify(gcWorker).start();
-    verifyZeroInteractions(scheduledEvaluator);
+    verifyNoInteractions(scheduledEvaluator);
     gcExecutor.onShutdown();
     verify(gcWorker).shutdown();
   }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcWorkerTest.java b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcWorkerTest.java
index 1073869..3624770 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcWorkerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/GcWorkerTest.java
@@ -18,7 +18,7 @@
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import com.ericsson.gerrit.plugins.gcconductor.GcQueue;
@@ -68,7 +68,7 @@
   public void noRepositoryPicked() throws Exception {
     when(cpm.isCancelled()).thenReturn(false).thenReturn(true);
     gcTask.run();
-    verifyZeroInteractions(garbageCollector);
+    verifyNoInteractions(garbageCollector);
     verify(queue, never()).remove(any(String.class));
     verify(queue, never()).unpick(any(String.class));
   }
@@ -79,7 +79,7 @@
     Thread t = new Thread(() -> gcTask.run());
     t.start();
     t.interrupt();
-    verifyZeroInteractions(garbageCollector);
+    verifyNoInteractions(garbageCollector);
     verify(queue, never()).remove(any(String.class));
     verify(queue, never()).unpick(any(String.class));
   }
@@ -99,7 +99,7 @@
     when(cpm.isCancelled()).thenReturn(false).thenReturn(true);
     doThrow(new GcQueueException("", new Throwable())).when(queue).pick(EXEC_NAME, 0, QUEUED_FROM);
     gcTask.run();
-    verifyZeroInteractions(garbageCollector);
+    verifyNoInteractions(garbageCollector);
     verify(queue, never()).remove(any(String.class));
     verify(queue, never()).unpick(any(String.class));
   }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluationTaskTest.java b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluationTaskTest.java
index 302c4c8..c22c1c9 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluationTaskTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluationTaskTest.java
@@ -17,7 +17,7 @@
 import static com.google.gerrit.testing.GerritJUnit.assertThrows;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import com.ericsson.gerrit.plugins.gcconductor.EvaluationTask;
@@ -81,7 +81,7 @@
     Thread t = new Thread(() -> periodicEvaluator.run());
     t.start();
     t.interrupt();
-    verifyZeroInteractions(evaluationTaskFactory);
+    verifyNoInteractions(evaluationTaskFactory);
   }
 
   private Repository createRepository(String repoName) throws Exception {
diff --git a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluatorTest.java b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluatorTest.java
index f04cdf3..5de1764 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluatorTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/gcconductor/executor/ScheduledEvaluatorTest.java
@@ -15,7 +15,7 @@
 package com.ericsson.gerrit.plugins.gcconductor.executor;
 
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import java.util.concurrent.TimeUnit;
 import org.junit.Test;
@@ -43,6 +43,6 @@
   public void testOnShutdown() {
     scheduledEvaluator = new ScheduledEvaluator(evaluationTask);
     scheduledEvaluator.onShutdown();
-    verifyZeroInteractions(evaluationTask);
+    verifyNoInteractions(evaluationTask);
   }
 }
