diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ConfigUtilTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ConfigUtilTest.java
index cf2997b..a767b0d 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ConfigUtilTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ConfigUtilTest.java
@@ -20,8 +20,11 @@
 import org.eclipse.jgit.lib.Config;
 import org.joda.time.Duration;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for configuration utilities. */
+@RunWith(JUnit4.class)
 public class ConfigUtilTest {
   @Test
   public void getDurationReturnsDuration() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
index 2431fbb..b66bffe 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/DateFormatterTest.java
@@ -24,11 +24,14 @@
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.util.GitDateParser;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.text.ParseException;
 import java.util.Date;
 import java.util.TimeZone;
 
+@RunWith(JUnit4.class)
 public class DateFormatterTest {
   @Test
   public void defaultIncludingTimeZone() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/DiffServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/DiffServletTest.java
index 3cf8e1c..9cb57c5 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/DiffServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/DiffServletTest.java
@@ -37,7 +37,10 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
+@RunWith(JUnit4.class)
 public class DiffServletTest {
   private TestRepository<DfsRepository> repo;
   private GitilesServlet servlet;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesFilterTest.java
index 349a0af..c2a569d 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesFilterTest.java
@@ -22,10 +22,13 @@
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.util.regex.Matcher;
 
 /** Tests for the Gitiles filter. */
+@RunWith(JUnit4.class)
 public class GitilesFilterTest {
   @Test
   public void rootUrls() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java
index 3316f44..465e331 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesUrlsTest.java
@@ -17,8 +17,11 @@
 import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Unit tests for {@link GitilesUrls}. */
+@RunWith(JUnit4.class)
 public class GitilesUrlsTest {
   @Test
   public void nameEscaperEscapesAppropriateSpecialCharacters() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
index 7bae414..76e7c01 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
@@ -26,8 +26,11 @@
 
 import org.eclipse.jgit.lib.ObjectId;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for Gitiles views. */
+@RunWith(JUnit4.class)
 public class GitilesViewTest {
   private static final GitilesView HOST = GitilesView.hostIndex()
       .setServletPath("/b")
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitwebRedirectFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitwebRedirectFilterTest.java
index b06da2a..c50b54f 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitwebRedirectFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitwebRedirectFilterTest.java
@@ -30,10 +30,13 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import javax.servlet.http.HttpServletRequest;
 
 /** Tests for gitweb redirector. */
+@RunWith(JUnit4.class)
 public class GitwebRedirectFilterTest {
   private TestRepository<DfsRepository> repo;
   private GitilesServlet servlet;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/IdentRevFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/IdentRevFilterTest.java
index d35bba4..0779552 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/IdentRevFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/IdentRevFilterTest.java
@@ -21,6 +21,8 @@
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /**
  * Tests for {@link IdentRevFilter}.
@@ -30,6 +32,7 @@
  * best thing is to test a {@link PersonIdent}, those are easy to construct.
  * TODO(dborowitz): Fix TestRepository to allow this.
  */
+@RunWith(JUnit4.class)
 public class IdentRevFilterTest {
   @Test
   public void matchesName() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
index cfd2423..fa70bc6 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
@@ -20,10 +20,13 @@
 import com.google.common.collect.ImmutableMap;
 
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import javax.servlet.http.HttpServletRequest;
 
 /** Tests for {@link Linkifier}. */
+@RunWith(JUnit4.class)
 public class LinkifierTest {
   private static final HttpServletRequest REQ = FakeHttpServletRequest.newRequest();
 
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java
index 242ab89..2491107 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/PaginatorTest.java
@@ -30,10 +30,13 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.util.List;
 
 /** Unit tests for {@link LogServlet}. */
+@RunWith(JUnit4.class)
 public class PaginatorTest {
   private TestRepository<DfsRepository> repo;
   private RevWalk walk;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/PathServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/PathServletTest.java
index 7da71f4..c7b6d08 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/PathServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/PathServletTest.java
@@ -38,6 +38,8 @@
 import org.eclipse.jgit.revwalk.RevTree;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.net.URL;
 import java.util.List;
@@ -45,6 +47,7 @@
 
 /** Tests for {@PathServlet}. */
 @SuppressWarnings("unchecked")
+@RunWith(JUnit4.class)
 public class PathServletTest {
   private static final Renderer RENDERER =
       new DefaultRenderer("/+static", ImmutableList.<URL> of(), "Test");
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/PathsTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/PathsTest.java
index f6d3a00..4e566e2 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/PathsTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/PathsTest.java
@@ -19,8 +19,11 @@
 import static org.junit.Assert.assertNull;
 
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for {@link Paths}. */
+@RunWith(JUnit4.class)
 public class PathsTest {
   @Test
   public void simplifyPathUpToRootSimplifiesPath() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
index c5b6482..0daa5cc 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
@@ -37,6 +37,8 @@
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.io.IOException;
 import java.util.List;
@@ -45,6 +47,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 /** Tests for {@link Linkifier}. */
+@RunWith(JUnit4.class)
 public class RefServletTest {
   private TestRepository<DfsRepository> repo;
   private GitilesServlet servlet;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RevisionParserTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RevisionParserTest.java
index 60df64d..8474ae2 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/RevisionParserTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/RevisionParserTest.java
@@ -32,8 +32,11 @@
 import org.eclipse.jgit.revwalk.RevTag;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for the revision parser. */
+@RunWith(JUnit4.class)
 public class RevisionParserTest {
   private TestRepository<DfsRepository> repo;
   private RevisionParser parser;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java
index 135614b..6481101 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/TimeCacheTest.java
@@ -30,10 +30,13 @@
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.io.IOException;
 
 /** Unit tests for {@link TimeCache}. */
+@RunWith(JUnit4.class)
 public class TimeCacheTest {
   private TestRepository<DfsRepository> repo;
   private RevWalk walk;
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
index 1a09dd8..85e327b 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
@@ -23,8 +23,11 @@
 
 import org.eclipse.jgit.lib.ObjectId;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 /** Tests for {@link TreeSoyData}. */
+@RunWith(JUnit4.class)
 public class TreeSoyDataTest {
   @Test
   public void getTargetDisplayNameReturnsDisplayName() throws Exception {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
index ed6cc79..e6be334 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
@@ -28,12 +28,15 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.io.IOException;
 
 import javax.servlet.ServletException;
 
 /** Tests for the view filter. */
+@RunWith(JUnit4.class)
 public class ViewFilterTest {
   private TestRepository<DfsRepository> repo;
 
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 19229e9..a09fb11 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
@@ -32,10 +32,13 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.util.List;
 import java.util.Map;
 
+@RunWith(JUnit4.class)
 public class BlameServletTest {
   private static class RegionJsonData {
     int start;
