diff --git a/fest-swing/src/test/java/org/fest/swing/core/Bug138_disposeWindows_Test.java b/fest-swing/src/test/java/org/fest/swing/core/Bug138_disposeWindows_Test.java
index ce5c998..67afb11 100644
--- a/fest-swing/src/test/java/org/fest/swing/core/Bug138_disposeWindows_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/core/Bug138_disposeWindows_Test.java
@@ -19,7 +19,7 @@
 import static org.fest.swing.test.task.WindowDestroyTask.hideAndDisposeInEDT;
 import static org.fest.util.Lists.newArrayList;
 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 java.awt.Container;
@@ -69,6 +69,6 @@
   @Test
   public void should_not_dispose_windows() {
     robot.cleanUpWithoutDisposingWindows();
-    verifyZeroInteractions(hierarchy);
+    verifyNoInteractions(hierarchy);
   }
 }
diff --git a/fest-swing/src/test/java/org/fest/swing/core/EmergencyAbortListener_eventDispatched_Test.java b/fest-swing/src/test/java/org/fest/swing/core/EmergencyAbortListener_eventDispatched_Test.java
index c420c75..9fc4bba 100644
--- a/fest-swing/src/test/java/org/fest/swing/core/EmergencyAbortListener_eventDispatched_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/core/EmergencyAbortListener_eventDispatched_Test.java
@@ -24,7 +24,7 @@
 import static org.fest.swing.test.builder.JButtons.button;
 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 static org.mockito.Mockito.when;
 
 import java.awt.AWTEvent;
@@ -55,7 +55,7 @@
     int eventId = KEY_PRESSED + 1;
     when(event.getID()).thenReturn(eventId);
     listener.eventDispatched(event);
-    verifyZeroInteractions(terminator);
+    verifyNoInteractions(terminator);
   }
 
   @Test
@@ -63,21 +63,21 @@
     AWTEvent event = newAWTEventMock();
     when(event.getID()).thenReturn(KEY_PRESSED);
     listener.eventDispatched(event);
-    verifyZeroInteractions(terminator);
+    verifyNoInteractions(terminator);
   }
 
   @Test
   public void should_not_terminate_tests_if_key_code_does_not_match() {
     KeyEvent event = new KeyEvent(button().createNew(), KEY_PRESSED, 0, 0, VK_Z, 'Z');
     listener.eventDispatched(event);
-    verifyZeroInteractions(terminator);
+    verifyNoInteractions(terminator);
   }
 
   @Test
   public void should_not_terminate_tests_if_modifiers_do_not_match() {
     KeyEvent event = new KeyEvent(button().createNew(), KEY_PRESSED, 0, 0, VK_A, 'A');
     listener.eventDispatched(event);
-    verifyZeroInteractions(terminator);
+    verifyNoInteractions(terminator);
   }
 
   @Test
diff --git a/fest-swing/src/test/java/org/fest/swing/driver/ComponentPerformDefaultAccessibleActionTask_performDefaultAccessibleAction_Test.java b/fest-swing/src/test/java/org/fest/swing/driver/ComponentPerformDefaultAccessibleActionTask_performDefaultAccessibleAction_Test.java
index 9f76c89..ff6ba10 100644
--- a/fest-swing/src/test/java/org/fest/swing/driver/ComponentPerformDefaultAccessibleActionTask_performDefaultAccessibleAction_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/driver/ComponentPerformDefaultAccessibleActionTask_performDefaultAccessibleAction_Test.java
@@ -18,7 +18,7 @@
 import static org.fest.swing.edt.GuiActionRunner.execute;
 import static org.fest.swing.test.core.CommonAssertions.failWhenExpectingException;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import java.awt.Component;
@@ -75,7 +75,7 @@
     } catch (ActionFailedException e) {
       assertActionFailedThrown(e);
     }
-    verifyZeroInteractions(accessibleAction);
+    verifyNoInteractions(accessibleAction);
   }
 
   @Test
diff --git a/fest-swing/src/test/java/org/fest/swing/driver/MultipleSelectionTemplate_multiSelect_Test.java b/fest-swing/src/test/java/org/fest/swing/driver/MultipleSelectionTemplate_multiSelect_Test.java
index 175e0ce..f3f165a 100644
--- a/fest-swing/src/test/java/org/fest/swing/driver/MultipleSelectionTemplate_multiSelect_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/driver/MultipleSelectionTemplate_multiSelect_Test.java
@@ -18,7 +18,7 @@
 import static org.fest.swing.core.TestRobots.newRobotMock;
 import static org.fest.swing.util.Platform.controlOrCommandKey;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import org.fest.swing.core.Robot;
 import org.junit.Before;
@@ -43,7 +43,7 @@
     template = new MultipleSelection(robot, 1);
     template.multiSelect();
     assertThat(template.timesSelected).isEqualTo(1);
-    verifyZeroInteractions(robot);
+    verifyNoInteractions(robot);
   }
 
   @Test
diff --git a/fest-swing/src/test/java/org/fest/swing/input/EventNormalizer_eventDispatched_Test.java b/fest-swing/src/test/java/org/fest/swing/input/EventNormalizer_eventDispatched_Test.java
index 42799ad..0df4c96 100644
--- a/fest-swing/src/test/java/org/fest/swing/input/EventNormalizer_eventDispatched_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/input/EventNormalizer_eventDispatched_Test.java
@@ -18,7 +18,7 @@
 import static org.fest.swing.test.awt.Toolkits.newToolkitMock;
 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 static org.mockito.Mockito.when;
 
 import java.awt.AWTEvent;
@@ -58,6 +58,6 @@
   public void should_not_delegate_event_if_it_is_a_duplicate_dispose() {
     when(disposedWindowMonitor.isDuplicateDispose(event)).thenReturn(true);
     eventNormalizer.eventDispatched(event);
-    verifyZeroInteractions(delegateEventListener);
+    verifyNoInteractions(delegateEventListener);
   }
 }
diff --git a/fest-swing/src/test/java/org/fest/swing/monitor/ContextMonitor_eventDispatched_Test.java b/fest-swing/src/test/java/org/fest/swing/monitor/ContextMonitor_eventDispatched_Test.java
index f04db69..a161cf9 100644
--- a/fest-swing/src/test/java/org/fest/swing/monitor/ContextMonitor_eventDispatched_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/monitor/ContextMonitor_eventDispatched_Test.java
@@ -26,7 +26,7 @@
 import static org.fest.swing.test.builder.JTextFields.textField;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import java.applet.Applet;
@@ -84,7 +84,7 @@
   @Test
   public void shouldNotProcessEventIfComponentIsNotWindowOrApplet() {
     monitor.eventDispatched(new ComponentEvent(textField().createNew(), 8));
-    verifyZeroInteractions(windows, context);
+    verifyNoInteractions(windows, context);
   }
 
   @Test
@@ -128,7 +128,7 @@
   public void shouldNotProcessEventWithIdWindowClosing() {
     when(context.storedQueueFor(window)).thenReturn(window.getToolkit().getSystemEventQueue());
     monitor.eventDispatched(new ComponentEvent(window, WINDOW_CLOSING));
-    verifyZeroInteractions(windows);
+    verifyNoInteractions(windows);
   }
 
   @Test
diff --git a/fest-swing/src/test/java/org/fest/swing/monitor/WindowAvailabilityMonitor_eventDispatched_Test.java b/fest-swing/src/test/java/org/fest/swing/monitor/WindowAvailabilityMonitor_eventDispatched_Test.java
index 4387ae7..de351a8 100644
--- a/fest-swing/src/test/java/org/fest/swing/monitor/WindowAvailabilityMonitor_eventDispatched_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/monitor/WindowAvailabilityMonitor_eventDispatched_Test.java
@@ -16,7 +16,7 @@
 
 import static org.fest.swing.edt.GuiActionRunner.execute;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import java.awt.Component;
 import java.awt.event.KeyEvent;
@@ -77,7 +77,7 @@
   @Test
   public void should_not_mark_source_Window_as_ready_if_event_is_not_MouseEvent() {
     monitor.eventDispatched(new KeyEvent(window, 8, 9238, 0, 0, 'a'));
-    verifyZeroInteractions(windows);
+    verifyNoInteractions(windows);
   }
 
   private MouseEvent mouseEvent(Component source) {
diff --git a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentHidden_Test.java b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentHidden_Test.java
index 66430e0..4b7d2cc 100644
--- a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentHidden_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentHidden_Test.java
@@ -15,7 +15,7 @@
 package org.fest.swing.monitor;
 
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import org.junit.Test;
 
@@ -34,6 +34,6 @@
   @Test
   public void should_not_mark_Window_as_hidden_if_Component_hidden_is_not_Window() {
     monitor.componentHidden(componentEventWithTextFieldAsSource());
-    verifyZeroInteractions(windows);
+    verifyNoInteractions(windows);
   }
 }
diff --git a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentShown_Test.java b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentShown_Test.java
index 5346ed2..4290a09 100644
--- a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentShown_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_componentShown_Test.java
@@ -15,7 +15,7 @@
 package org.fest.swing.monitor;
 
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import org.junit.Test;
 
@@ -34,6 +34,6 @@
   @Test
   public void should_not_mark_Window_as_showing_if_Component_shown_is_not_Window() {
     monitor.componentShown(componentEventWithTextFieldAsSource());
-    verifyZeroInteractions(windows);
+    verifyNoInteractions(windows);
   }
 }
diff --git a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_windowClosed_Test.java b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_windowClosed_Test.java
index 4d7b4f0..9bf0e3b 100644
--- a/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_windowClosed_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/monitor/WindowVisibilityMonitor_windowClosed_Test.java
@@ -16,7 +16,7 @@
 
 import static org.fest.assertions.Assertions.assertThat;
 import static org.fest.swing.test.core.MethodInvocations.Args.args;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.verifyNoInteractions;
 
 import java.awt.event.WindowEvent;
 
@@ -34,6 +34,6 @@
     monitor.windowClosed(new WindowEvent(window, 8));
     assertThat(window.requireInvoked("removeWindowListener", args(monitor)));
     assertThat(window.requireInvoked("removeComponentListener", args(monitor)));
-    verifyZeroInteractions(windows);
+    verifyNoInteractions(windows);
   }
 }
diff --git a/fest-swing/src/test/java/org/fest/swing/security/NoExitSecurityManager_checkExit_Test.java b/fest-swing/src/test/java/org/fest/swing/security/NoExitSecurityManager_checkExit_Test.java
index fcdce4b..ae77c55 100644
--- a/fest-swing/src/test/java/org/fest/swing/security/NoExitSecurityManager_checkExit_Test.java
+++ b/fest-swing/src/test/java/org/fest/swing/security/NoExitSecurityManager_checkExit_Test.java
@@ -17,7 +17,7 @@
 import static org.fest.util.Arrays.array;
 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 static org.mockito.Mockito.when;
 
 import org.junit.Before;
@@ -68,7 +68,7 @@
     StackTraceElement[] stackTrace = array(methodInRuntime("availableProcessors"));
     when(stackTraces.stackTraceInCurrentThread()).thenReturn(stackTrace);
     securityManager.checkExit(0);
-    verifyZeroInteractions(hook);
+    verifyNoInteractions(hook);
   }
 
   private StackTraceElement methodInRuntime(String methodName) {
@@ -81,6 +81,6 @@
     StackTraceElement[] stackTrace = array(e);
     when(stackTraces.stackTraceInCurrentThread()).thenReturn(stackTrace);
     securityManager.checkExit(0);
-    verifyZeroInteractions(hook);
+    verifyNoInteractions(hook);
   }
 }
