diff --git a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/DocumentPerformanceTestSuite.java b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/DocumentPerformanceTestSuite.java
index 443c374..f3e50a8 100644
--- a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/DocumentPerformanceTestSuite.java
+++ b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/DocumentPerformanceTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,22 +13,18 @@
  *******************************************************************************/
 package org.eclipse.jdt.text.tests.performance;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
 
 
 /**
  * @since 3.3
  */
-public class DocumentPerformanceTestSuite extends TestSuite {
-
-	public static Test suite() {
-		return new PerformanceTestSetup(new DocumentPerformanceTestSuite());
-	}
-
-	public DocumentPerformanceTestSuite() {
-		addTest(DocumentPerformanceTest.suite());
-		addTest(GapTextStorePerformanceTest.suite());
-		addTest(LineTrackerPerformanceTest.suite());
-	}
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+	DocumentPerformanceTest.class,
+	GapTextStorePerformanceTest.class,
+	LineTrackerPerformanceTest.class
+})
+public class DocumentPerformanceTestSuite {
 }
diff --git a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/WordRulePerformanceTestSuite.java b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/WordRulePerformanceTestSuite.java
index 5570e16..bfe5827 100644
--- a/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/WordRulePerformanceTestSuite.java
+++ b/org.eclipse.jdt.text.tests/src/org/eclipse/jdt/text/tests/performance/WordRulePerformanceTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -13,20 +13,15 @@
  *******************************************************************************/
 package org.eclipse.jdt.text.tests.performance;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
 
 /**
  * @since 3.6
  */
-public class WordRulePerformanceTestSuite extends TestSuite {
-
-	public static Test suite() {
-		return new PerformanceTestSetup(new WordRulePerformanceTestSuite());
-	}
-
-	public WordRulePerformanceTestSuite() {
-		addTest(WordRulePerformanceTest.suite());
-	}
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+	WordRulePerformanceTest.class
+})
+public class WordRulePerformanceTestSuite {
 }
