diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java
index eebea25..01de750 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ServletTest.java
@@ -30,8 +30,12 @@
 import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
 import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
+import org.eclipse.jgit.junit.MockSystemReader;
 import org.eclipse.jgit.junit.TestRepository;
 import org.eclipse.jgit.lib.PersonIdent;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.util.SystemReader;
+import org.junit.After;
 import org.junit.Before;
 
 import java.util.Map;
@@ -44,11 +48,18 @@
 
   @Before
   public void setUp() throws Exception {
-    repo = new TestRepository<DfsRepository>(
-        new InMemoryRepository(new DfsRepositoryDescription("repo")));
+    MockSystemReader mockSystemReader = new MockSystemReader();
+    SystemReader.setInstance(mockSystemReader);
+    DfsRepository r = new InMemoryRepository(new DfsRepositoryDescription("repo"));
+    repo = new TestRepository<>(r, new RevWalk(r), mockSystemReader);
     servlet = TestGitilesServlet.create(repo);
   }
 
+  @After
+  public void tearDown() {
+      SystemReader.setInstance(null);
+  }
+
   protected FakeHttpServletResponse buildResponse(
       String path, String queryString, int expectedStatus)
       throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java
index e0f4360..f4fb859 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/blame/BlameServletTest.java
@@ -21,7 +21,6 @@
 import com.google.gitiles.ServletTest;
 import com.google.gson.reflect.TypeToken;
 
-import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -32,8 +31,8 @@
 
 @RunWith(JUnit4.class)
 public class BlameServletTest extends ServletTest {
-  private static final String NAME = "Y. Author";
-  private static final String EMAIL = "yauthor@example.com";
+  private static final String NAME = "J. Author";
+  private static final String EMAIL = "jauthor@example.com";
   private static class RegionJsonData {
     int start;
     int count;
@@ -46,11 +45,10 @@
   public void blameJson() throws Exception {
     String contents1 = "foo\n";
     String contents2 = "foo\ncontents\n";
-    PersonIdent author = new PersonIdent(NAME, EMAIL);
-    RevCommit c1 = repo.update("master", repo.commit().add("foo", contents1).author(author));
+    RevCommit c1 = repo.update("master", repo.commit().add("foo", contents1));
     String c1Time = currentTimeFormatted();
     RevCommit c2 = repo.update("master",
-        repo.commit().tick(10).parent(c1).add("foo", contents2).author(author));
+        repo.commit().tick(10).parent(c1).add("foo", contents2));
     String c2Time = currentTimeFormatted();
 
     Map<String, List<RegionJsonData>> result = getBlameJson("/repo/+blame/" + c2.name() + "/foo");
