diff --git a/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java b/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
index 5ec5ab5..e81cd54 100644
--- a/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
+++ b/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
@@ -36,10 +36,10 @@
 import com.android.messaging.ui.attachmentchooser.AttachmentChooserFragment.AttachmentChooserFragmentHost;
 import com.android.messaging.ui.conversationlist.ConversationListFragment;
 
+import org.mockito.ArgumentMatcher;
 import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.compat.ArgumentMatcher;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -62,16 +62,14 @@
     /** A custom argument matcher that checks whether the set argument passed in is a set
      * with identical attachment data as the given set.
      */
-    private class IsSetOfGivenAttachments extends ArgumentMatcher<Set<MessagePartData>> {
+    private class IsSetOfGivenAttachments implements ArgumentMatcher<Set<MessagePartData>> {
         private final Set<MessagePartData> mGivenParts;
         public IsSetOfGivenAttachments(final Set<MessagePartData> givenParts) {
             mGivenParts = givenParts;
         }
 
         @Override
-        public boolean matchesObject(final Object set) {
-            @SuppressWarnings("unchecked")
-            final Set<MessagePartData> actualSet = (Set<MessagePartData>) set;
+        public boolean matches(final Set<MessagePartData> actualSet) {
             if (actualSet.size() != mGivenParts.size()) {
                 return false;
             }
diff --git a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
index 8c372f2..2148c71 100644
--- a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
+++ b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
@@ -16,6 +16,9 @@
 
 package com.android.messaging.ui.conversation;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.isNull;
+
 import android.content.Context;
 import android.media.MediaPlayer;
 import android.test.suitebuilder.annotation.MediumTest;
@@ -39,10 +42,10 @@
 import com.android.messaging.util.FakeMediaUtil;
 import com.android.messaging.util.ImeUtil;
 
+import org.mockito.ArgumentMatcher;
 import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.compat.ArgumentMatcher;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
@@ -127,8 +130,8 @@
 
         view.requestDraftMessage(false);
 
-        Mockito.verify(mockDraftMessageData).loadFromStorage(Matchers.any(BindingBase.class),
-                Matchers.any(MessageData.class), Mockito.eq(false));
+        Mockito.verify(mockDraftMessageData).loadFromStorage(any(BindingBase.class),
+                isNull(), Mockito.eq(false));
 
         view.onDraftChanged(mockDraftMessageData, DraftMessageData.ALL_CHANGED);
 
@@ -136,12 +139,9 @@
 
         sendButton.performClick();
         Mockito.verify(mockIComposeMessageViewHost).sendMessage(
-                Mockito.argThat(new ArgumentMatcher<MessageData>() {
-                    @Override
-                    public boolean matchesObject(final Object o) {
-                        assertEquals(message.getMessageText(), ((MessageData) o).getMessageText());
-                        return true;
-                    }
+                Mockito.argThat(o -> {
+                    assertEquals(message.getMessageText(), o.getMessageText());
+                    return true;
                 }));
     }
 
@@ -170,8 +170,8 @@
 
         view.requestDraftMessage(false);
 
-        Mockito.verify(mockDraftMessageData).loadFromStorage(Matchers.any(BindingBase.class),
-                Matchers.any(MessageData.class), Mockito.eq(false));
+        Mockito.verify(mockDraftMessageData).loadFromStorage(any(BindingBase.class),
+                isNull(), Mockito.eq(false));
 
         view.onDraftChanged(mockDraftMessageData, DraftMessageData.ALL_CHANGED);
 
@@ -179,6 +179,6 @@
 
         sendButton.performClick();
         Mockito.verify(mockIComposeMessageViewHost).warnOfMissingActionConditions(
-                Matchers.any(Boolean.class), Matchers.any(Runnable.class));
+                any(Boolean.class), any(Runnable.class));
     }
 }
diff --git a/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java b/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
index 1fbba1f..afac0d8 100644
--- a/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
+++ b/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
@@ -35,9 +35,9 @@
 import com.android.messaging.ui.conversationlist.ConversationListItemView;
 import com.android.messaging.util.Dates;
 
+import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.compat.ArgumentMatcher;
 
 @MediumTest
 public class ConversationListItemViewTest extends ViewTest<ConversationListItemView> {
@@ -60,12 +60,7 @@
             final ConversationListItemView conversationView) {
         // Must be a short click.
         final ArgumentMatcher<ConversationListItemData> itemDataIdMatcher =
-                new ArgumentMatcher<ConversationListItemData>() {
-            @Override
-            public boolean matchesObject(final Object arg) {
-                return TextUtils.equals(id, ((ConversationListItemData) arg).getConversationId());
-            }
-        };
+                arg -> TextUtils.equals(id, arg.getConversationId());
         Mockito.verify(mockHost).onConversationClicked(
                 Mockito.argThat(itemDataIdMatcher), Mockito.eq(false),
                 Mockito.eq(conversationView));
