diff --git a/lib/BUCK b/lib/BUCK
index 5e5b5bd..8b0ec04 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -16,15 +16,24 @@
 
 maven_jar(
   name = 'junit',
-  id = 'junit:junit:4.10',
-  sha1 = 'e4f1766ce7404a08f45d859fb9c226fc9e41a861',
+  id = 'junit:junit:4.11',
+  sha1 = '4e031bb61df09069aeb2bffb4019e7a5034a4ee0',
   license = 'DO_NOT_DISTRIBUTE',
+  exported_deps = [':hamcrest-core'],
+)
+
+maven_jar(
+  name = 'hamcrest-core',
+  id = 'org.hamcrest:hamcrest-core:1.3',
+  sha1 = '42a25dc3219429f0e5d060061f71acb49bf010a0',
+  license = 'DO_NOT_DISTRIBUTE',
+  visibility = ['//lib:junit'],
 )
 
 maven_jar(
   name = 'truth',
-  id = 'com.google.truth:truth:0.25',
-  sha1 = '503ba892e8482976b81eb2b2df292858fbac3782',
+  id = 'com.google.truth:truth:0.26',
+  sha1 = 'b5802815625d82f39c33219299771f3d64301b06',
   license = 'DO_NOT_DISTRIBUTE',
   exported_deps = [
     ':guava',
diff --git a/lib/easymock/BUCK b/lib/easymock/BUCK
index 2a774a9..11d95a4 100644
--- a/lib/easymock/BUCK
+++ b/lib/easymock/BUCK
@@ -2,8 +2,8 @@
 
 maven_jar(
   name = 'easymock',
-  id = 'org.easymock:easymock:3.2',
-  sha1 = '00c82f7fa3ef377d8954b1db25123944b5af2ba4',
+  id = 'org.easymock:easymock:3.3.1',
+  sha1 = 'a497d7f00c9af78b72b6d8f24762d9210309148a',
   license = 'DO_NOT_DISTRIBUTE',
   deps = [
     ':cglib-2_2',
@@ -21,8 +21,8 @@
 
 maven_jar(
   name = 'objenesis',
-  id = 'org.objenesis:objenesis:1.2',
-  sha1 = 'bfcb0539a071a4c5a30690388903ac48c0667f2a',
+  id = 'org.objenesis:objenesis:2.1',
+  sha1 = '87c0ea803b69252868d09308b4618f766f135a96',
   license = 'DO_NOT_DISTRIBUTE',
   visibility = ['//lib/powermock:powermock-reflect'],
   attach_source = False,
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index 37e0081..85b90a8 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,12 +1,11 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.11.1'
-REPO = MAVEN_CENTRAL
+VER = '2.12-SNAPSHOT'
+REPO = MAVEN_LOCAL
 
 maven_jar(
   name = 'plugin-api',
   id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  sha1 = 'ac0ff45ff294b6f92c1c5cb0e166be6c3803bcd2',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
diff --git a/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsLogConfigTest.java b/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsLogConfigTest.java
index d5943e1..3e939a4 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsLogConfigTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsLogConfigTest.java
@@ -47,7 +47,8 @@
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.file.Files;
 
 public class EventsLogConfigTest {
   private SitePaths site;
@@ -62,10 +63,10 @@
   public TemporaryFolder gerrit_site = new TemporaryFolder();
 
   @Before
-  public void setUp() throws FileNotFoundException {
+  public void setUp() throws IOException {
     easyMock = new EasyMockSupport();
-    site = new SitePaths(gerrit_site.getRoot());
-    site.etc_dir.mkdirs();
+    site = new SitePaths(gerrit_site.getRoot().toPath());
+    Files.createDirectories(site.etc_dir);
     defaultLocalStorePath = site.site_path.toString() + "/events-db/";
     configMock = easyMock.createMock(PluginConfig.class);
     cfgFactoryMock = easyMock.createMock(PluginConfigFactory.class);
diff --git a/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsRestApiServletTest.java
index abc5f48..8df7942 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsRestApiServletTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/eventslog/EventsRestApiServletTest.java
@@ -15,6 +15,7 @@
 package com.ericsson.gerrit.plugins.eventslog;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.easymock.EasyMock.newCapture;
 import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
@@ -73,7 +74,7 @@
     Map<String, String> paramMock = new HashMap<>();
     paramMock.put("a", "1");
     paramMock.put("b", "2");
-    Capture<Map<String, String>> catcher = new Capture<>();
+    Capture<Map<String, String>> catcher = newCapture();
     easyMock.resetAll();
     expect(userProviderMock.get()).andStubReturn(userMock);
     expect(userMock.isIdentifiedUser()).andStubReturn(true);
@@ -91,7 +92,7 @@
   @Test
   public void badQueryString() throws Exception {
     String queryStringMock = "a;b";
-    Capture<Map<String, String>> catcher = new Capture<>();
+    Capture<Map<String, String>> catcher = newCapture();
     easyMock.resetAll();
     expect(userProviderMock.get()).andStubReturn(userMock);
     expect(userMock.isIdentifiedUser()).andStubReturn(true);
diff --git a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
index e4787e1..e8aaa51 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
@@ -302,11 +302,14 @@
     NoSuchProjectException e =
         easyMock.createNiceMock(NoSuchProjectException.class);
     expect(
-        pcFactoryMock.controlFor(EasyMock.anyObject(Project.NameKey.class),
-            EasyMock.anyObject(CurrentUser.class))).andReturn(pc).times(2);
+        pcFactoryMock.controlFor(EasyMock.eq(mockEvent.getProjectNameKey()),
+            EasyMock.anyObject(CurrentUser.class))).andReturn(pc).once();
+    expect(
+        pcFactoryMock.controlFor(EasyMock.eq(mockEvent2.getProjectNameKey()),
+            EasyMock.anyObject(CurrentUser.class))).andReturn(pc).once();
     expect(pc.isVisible()).andReturn(true).times(2);
     expect(
-        pcFactoryMock.controlFor(EasyMock.anyObject(Project.NameKey.class),
+        pcFactoryMock.controlFor(EasyMock.eq(mockEvent3.getProjectNameKey()),
             EasyMock.anyObject(CurrentUser.class))).andThrow(e);
     easyMock.replayAll();
 
