diff --git a/test/build.xml b/test/build.xml
index 19f2412a4da7677ac74a4fe3ca7ffef3e6d79996..c30d880148099ae6ccc563656590b1013ff60943 100644
--- a/test/build.xml
+++ b/test/build.xml
@@ -20,8 +20,8 @@
 			<test name='net.sf.briar.crypto.SharedSecretTest'/>
 			<test name='net.sf.briar.db.BasicH2Test'/>
 			<test name='net.sf.briar.db.DatabaseCleanerImplTest'/>
+			<test name='net.sf.briar.db.DatabaseComponentImplTest'/>
 			<test name='net.sf.briar.db.H2DatabaseTest'/>
-			<test name='net.sf.briar.db.ReadWriteLockDatabaseComponentTest'/>
 			<test name='net.sf.briar.i18n.FontManagerTest'/>
 			<test name='net.sf.briar.i18n.I18nTest'/>
 			<test name='net.sf.briar.invitation.InvitationWorkerTest'/>
diff --git a/test/net/sf/briar/db/DatabaseComponentImplTest.java b/test/net/sf/briar/db/DatabaseComponentImplTest.java
index 8e114c46f30a8f52d1bdb1388f03274bec70b67c..33ce3feeba8d4f252c9aa8c547842e37b0043d40 100644
--- a/test/net/sf/briar/db/DatabaseComponentImplTest.java
+++ b/test/net/sf/briar/db/DatabaseComponentImplTest.java
@@ -5,6 +5,7 @@ import static net.sf.briar.api.db.DatabaseComponent.MIN_FREE_SPACE;
 
 import java.util.Collections;
 
+import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.db.DatabaseCleaner.Callback;
 
@@ -16,10 +17,7 @@ import org.junit.Test;
  * Tests that use the DatabaseCleaner.Callback interface of
  * DatabaseComponentImpl.
  */
-public abstract class DatabaseComponentImplTest extends DatabaseComponentTest {
-
-	protected abstract <T> DatabaseComponentImpl<T> createDatabaseComponentImpl(
-			Database<T> database, DatabaseCleaner cleaner);
+public class DatabaseComponentImplTest extends DatabaseComponentTest {
 
 	@Test
 	public void testNotCleanedIfEnoughFreeSpace() throws DbException {
@@ -120,4 +118,14 @@ public abstract class DatabaseComponentImplTest extends DatabaseComponentTest {
 
 		context.assertIsSatisfied();
 	}
+
+	protected <T> DatabaseComponent createDatabaseComponent(
+			Database<T> database, DatabaseCleaner cleaner) {
+		return createDatabaseComponentImpl(database, cleaner);
+	}
+
+	private <T> DatabaseComponentImpl<T> createDatabaseComponentImpl(
+			Database<T> database, DatabaseCleaner cleaner) {
+		return new ReadWriteLockDatabaseComponent<T>(database, cleaner);
+	}
 }
diff --git a/test/net/sf/briar/db/ReadWriteLockDatabaseComponentTest.java b/test/net/sf/briar/db/ReadWriteLockDatabaseComponentTest.java
deleted file mode 100644
index b0d5291f5aaa22087ef56c589a0ec38ca5907d31..0000000000000000000000000000000000000000
--- a/test/net/sf/briar/db/ReadWriteLockDatabaseComponentTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package net.sf.briar.db;
-
-import net.sf.briar.api.db.DatabaseComponent;
-
-public class ReadWriteLockDatabaseComponentTest
-extends DatabaseComponentImplTest {
-
-	@Override
-	protected <T> DatabaseComponent createDatabaseComponent(
-			Database<T> database, DatabaseCleaner cleaner) {
-		return createDatabaseComponentImpl(database, cleaner);
-	}
-
-	@Override
-	protected <T> DatabaseComponentImpl<T> createDatabaseComponentImpl(
-			Database<T> database, DatabaseCleaner cleaner) {
-		return new ReadWriteLockDatabaseComponent<T>(database, cleaner);
-	}
-}