diff --git a/BUILD b/BUILD
index 77d9d09..43871b1 100644
--- a/BUILD
+++ b/BUILD
@@ -57,9 +57,7 @@
 
 TEST_DEPS = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
     ":copyright_scanner",
-    "//lib/mockito",
     "@guava//jar",
-    "@mockito//jar",
 ]
 
 java_library(
diff --git a/WORKSPACE b/WORKSPACE
index c8ab81d..d752151 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -66,30 +66,3 @@
     artifact = "com.google.j2objc:j2objc-annotations:1.1",
     sha1 = "ed28ded51a8b1c6b112568def5f4b455e6809019",
 )
-
-maven_jar(
-    name = "mockito",
-    artifact = "org.mockito:mockito-core:2.24.0",
-    sha1 = "969a7bcb6f16e076904336ebc7ca171d412cc1f9",
-)
-
-BYTE_BUDDY_VERSION = "1.9.7"
-
-maven_jar(
-    name = "byte-buddy",
-    artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
-    sha1 = "8fea78fea6449e1738b675cb155ce8422661e237",
-)
-
-maven_jar(
-    name = "byte-buddy-agent",
-    artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
-    sha1 = "8e7d1b599f4943851ffea125fd9780e572727fc0",
-)
-
-maven_jar(
-    name = "objenesis",
-    artifact = "org.objenesis:objenesis:2.6",
-    sha1 = "639033469776fd37c08358c6b92a4761feb2af4b",
-)
-
diff --git a/lib/mockito/BUILD b/lib/mockito/BUILD
deleted file mode 100644
index 89a1400..0000000
--- a/lib/mockito/BUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-package(
-    default_testonly = True,
-    default_visibility = ["//visibility:public"],
-)
-
-java_library(
-    name = "mockito",
-    data = ["//lib:LICENSE-Apache2.0"],
-    # Only exposed for plugin tests; core tests should use Easymock
-    exports = ["@mockito//jar"],
-    runtime_deps = [
-        ":byte-buddy",
-        ":byte-buddy-agent",
-        ":objenesis",
-    ],
-)
-
-java_library(
-    name = "byte-buddy",
-    data = ["//lib:LICENSE-Apache2.0"],
-    exports = ["@byte-buddy//jar"],
-)
-
-java_library(
-    name = "byte-buddy-agent",
-    data = ["//lib:LICENSE-Apache2.0"],
-    exports = ["@byte-buddy-agent//jar"],
-)
-
-java_library(
-    name = "objenesis",
-    data = ["//lib:LICENSE-Apache2.0"],
-    exports = ["@objenesis//jar"],
-)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/copyright/CopyrightValidator.java b/src/main/java/com/googlesource/gerrit/plugins/copyright/CopyrightValidator.java
index cda88ce..f17ed95 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/copyright/CopyrightValidator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/copyright/CopyrightValidator.java
@@ -281,17 +281,19 @@
     metrics.scanRevisionTimerByBranch.record(branch, scanTime, TimeUnit.MILLISECONDS);
 
     ReviewResult result = reviewApi.reportScanFindings(project, scannerConfig, event, findings);
-    if (result.error != null && !result.error.equals("")) {
+    if (result != null && result.error != null && !result.error.equals("")) {
       logger.atSevere().log(
           "%s plugin revision %s: error posting review: %s",
           pluginName, event.getChange().currentRevision, result.error);
     }
-    for (Map.Entry<String, AddReviewerResult> entry : result.reviewers.entrySet()) {
-      AddReviewerResult arr = entry.getValue();
-      if (arr.error != null && !arr.error.equals("")) {
-        logger.atSevere().log(
-            "%s plugin revision %s: error adding reviewer %s: %s",
-            pluginName, event.getChange().currentRevision, entry.getKey(), arr.error);
+    if (result != null && result.reviewers != null) {
+      for (Map.Entry<String, AddReviewerResult> entry : result.reviewers.entrySet()) {
+        AddReviewerResult arr = entry.getValue();
+        if (arr.error != null && !arr.error.equals("")) {
+          logger.atSevere().log(
+              "%s plugin revision %s: error adding reviewer %s: %s",
+              pluginName, event.getChange().currentRevision, entry.getKey(), arr.error);
+        }
       }
     }
   }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/copyright/CopyrightReviewApiTest.java b/src/test/java/com/googlesource/gerrit/plugins/copyright/CopyrightReviewApiTest.java
index 2c1cda7..f71ea0f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/copyright/CopyrightReviewApiTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/copyright/CopyrightReviewApiTest.java
@@ -21,11 +21,12 @@
 import static com.googlesource.gerrit.plugins.copyright.lib.CopyrightScanner.PartyType.FORBIDDEN;
 import static com.googlesource.gerrit.plugins.copyright.lib.CopyrightScanner.PartyType.THIRD_PARTY;
 import static com.googlesource.gerrit.plugins.copyright.lib.CopyrightScanner.PartyType.UNKNOWN;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.truth.Correspondence;
@@ -42,15 +43,15 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.junit.runners.JUnit4;
 
-@RunWith(MockitoJUnitRunner.class)
+@RunWith(JUnit4.class)
 public class CopyrightReviewApiTest {
   private static final PluginUser pluginUser = new FakePluginUser();
   private static final CurrentUser currentUser = new FakeCurrentUser();
 
-  @Mock private IdentifiedUser.GenericFactory identifiedUserFactory;
+  private IdentifiedUser.GenericFactory identifiedUserFactory =
+      createMock(IdentifiedUser.GenericFactory.class);
 
   private CopyrightReviewApi reviewApi;
 
@@ -71,16 +72,24 @@
 
   @Test
   public void testGetSendingUser_fromAccountIdConfigured() throws Exception {
+    expect(
+            identifiedUserFactory.runAs(
+                eq(null), anyObject(Account.Id.class), anyObject(PluginUser.class)))
+        .andReturn(null);
+    replay(identifiedUserFactory);
+
     CurrentUser from = reviewApi.getSendingUser(808);
-    verify(identifiedUserFactory, times(1))
-        .runAs(eq(null), any(Account.Id.class), any(PluginUser.class));
+
+    verify(identifiedUserFactory);
   }
 
   @Test
   public void testGetSendingUser_noFromAccountIdConfigured() throws Exception {
+    replay(identifiedUserFactory);
+
     CurrentUser from = reviewApi.getSendingUser(0);
-    verify(identifiedUserFactory, never())
-        .runAs(eq(null), any(Account.Id.class), any(PluginUser.class));
+
+    verify(identifiedUserFactory);
     assertThat(from).isSameAs(currentUser);
   }
 
