diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle
index 8f864b574dc2f482d88ddf29fc9c7e3c17be7cc4..0f68839eef9ed477d4f48df8f26ff8f3e3946cf7 100644
--- a/bramble-api/build.gradle
+++ b/bramble-api/build.gradle
@@ -32,7 +32,7 @@ dependencyVerification {
 configurations {
 	testOutput.extendsFrom(testCompile)
 }
-task jarTest (type: Jar, dependsOn: testClasses) {
+task jarTest(type: Jar, dependsOn: testClasses) {
 	from sourceSets.test.output
 	classifier = 'test'
 }
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfDictionaryTest.java b/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfDictionaryTest.java
index 9a06c0e49168b6238cea77b3e541ead5752747fc..17bb651163b4e0294fae3cac32b6a0cf0981d0d4 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfDictionaryTest.java
+++ b/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfDictionaryTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.Bytes;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfListTest.java b/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfListTest.java
index 76ad505674c9f58ad033df7f5df18070d4e4e4ed..55fbf39dbf798f5cd041d3dbd2f6737bb5cc6e74 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfListTest.java
+++ b/bramble-api/src/test/java/org/briarproject/bramble/api/data/BdfListTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.FormatException;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/BrambleMockTestCase.java b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleMockTestCase.java
similarity index 86%
rename from bramble-api/src/test/java/org/briarproject/bramble/BrambleMockTestCase.java
rename to bramble-api/src/test/java/org/briarproject/bramble/test/BrambleMockTestCase.java
index b43003e1326c3c41d345acbae8a26295a1012e28..650063c042d4e7459b6a121652c2378337604b72 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/BrambleMockTestCase.java
+++ b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleMockTestCase.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.jmock.Mockery;
 import org.junit.After;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/BrambleTestCase.java b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java
similarity index 92%
rename from bramble-api/src/test/java/org/briarproject/bramble/BrambleTestCase.java
rename to bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java
index 968c6099f3ef054eb829b4bb83ce9b203994919c..aa0eb55e506d66599827cf09bc8605c22679f212 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/BrambleTestCase.java
+++ b/bramble-api/src/test/java/org/briarproject/bramble/test/BrambleTestCase.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import java.lang.Thread.UncaughtExceptionHandler;
 
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/TestUtils.java b/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java
similarity index 96%
rename from bramble-api/src/test/java/org/briarproject/bramble/TestUtils.java
rename to bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java
index bfdab2fe94e29a8caa865b3d906f3d3ba5c0282b..9e8a1df9acdd3a04350d5b976e1fb7ff756b6fa7 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/TestUtils.java
+++ b/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.crypto.SecretKey;
diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle
index 9c2ecbc3c487eb19be1866d932c3898a2bc6fb16..ffc432b2898a2076b0a28e3886e774a5f2d16dc0 100644
--- a/bramble-core/build.gradle
+++ b/bramble-core/build.gradle
@@ -28,7 +28,7 @@ dependencyVerification {
 configurations {
 	testOutput.extendsFrom(testCompile)
 }
-task jarTest (type: Jar, dependsOn: testClasses) {
+task jarTest(type: Jar, dependsOn: testClasses) {
 	from sourceSets.test.output
 	classifier = 'test'
 }
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java b/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
index 99b3b8b27648acecfdf3e6da30b8a72fb8a5f433..58afef572e2eb56eac2c160c5e53b6d2d09dad94 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.client;
 
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.BdfMessageContext;
 import org.briarproject.bramble.api.client.BdfMessageValidator;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageContext;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.jmock.Expectations;
 import org.jmock.lib.legacy.ClassImposteriser;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/client/ClientHelperImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/client/ClientHelperImplTest.java
index 3f4ff4e30c42f0fd0b0662d1dfa52f257c919886..d0def2ad4cd817a3319359dc2b92eef309fd4481 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/client/ClientHelperImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/client/ClientHelperImplTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.client;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
@@ -21,6 +19,8 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
@@ -32,8 +32,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
index 983ab2c00105447b52ebe603471782fe3005c0b4..1c4f2907374a9a90942eb6f60e060d6b561625f2 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.contact;
 
-import org.briarproject.bramble.BrambleMockTestCase;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.ContactManager;
@@ -11,6 +10,7 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.transport.KeyManager;
+import org.briarproject.bramble.test.BrambleMockTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
@@ -19,9 +19,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.bramble.TestUtils.getSecretKey;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getSecretKey;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/AsciiArmourTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/AsciiArmourTest.java
index 61e3a0ad34a4ab1888d236da8377628235b76732..7d1f045c2fc6077afef2a25620b6c9fa0c8b4e7c 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/AsciiArmourTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/AsciiArmourTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertArrayEquals;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/Blake2sDigestTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/Blake2sDigestTest.java
index 6cb64e3982f44ce5bca6f571d815897c3d24f0e6..da0e7d5dad1a4c63f48ced68e34554afffe5314b 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/Blake2sDigestTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/Blake2sDigestTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.briarproject.bramble.util.StringUtils;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/EllipticCurveMultiplicationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/EllipticCurveMultiplicationTest.java
index ac55112ddc0c805a0ae5efba916e5b1caa20e851..ce3d03e443339a041454947603ff54509d2c24d4 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/EllipticCurveMultiplicationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/EllipticCurveMultiplicationTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 import org.spongycastle.asn1.teletrust.TeleTrusTNamedCurves;
 import org.spongycastle.asn1.x9.X9ECParameters;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaGeneratorTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaGeneratorTest.java
index b7c84534bd9dbf38ac4c02ad8c139f2ca583210e..c1573f610f3fb8cfcf74e77840e511cfaea3d7e9 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaGeneratorTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaGeneratorTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 import org.spongycastle.crypto.BlockCipher;
 import org.spongycastle.crypto.engines.AESLightEngine;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaSecureRandomTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaSecureRandomTest.java
index ed8d00eee197f0802adf2fd3c5d7f6d6cc01e888..d685ce11fba2cf0f0da06b1681727af3c65c5ca3 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaSecureRandomTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/FortunaSecureRandomTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 import org.spongycastle.crypto.BlockCipher;
 import org.spongycastle.crypto.digests.SHA256Digest;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyAgreementTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyAgreementTest.java
index 31d24411d01bbc394c34733189a0287827950207..0a0e826dc92445b75b191fc1a4fe6e85d948d241 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyAgreementTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyAgreementTest.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.system.SeedProvider;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
 import org.junit.Test;
 
 import static org.junit.Assert.assertArrayEquals;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyDerivationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyDerivationTest.java
index 607c99ab83530767a39ac528568d66cf57298d2b..616833c470b8f0d4217acd18519e206d2116e14e 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyDerivationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyDerivationTest.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.util.ArrayList;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyEncodingAndParsingTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyEncodingAndParsingTest.java
index 30e2a803e91d4435a8fd5ca0863f4ffe4b4f9fc6..3a6f011f87ff2dcfa0479e1b130c98ce76123fc9 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyEncodingAndParsingTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/KeyEncodingAndParsingTest.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.KeyParser;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.security.GeneralSecurityException;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/MacTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/MacTest.java
index 54b4ac9aa63af859b80caf0f19b267bfc665de3a..3699e601e810d9588830ba52d4fbdc8e30a46c41 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/MacTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/MacTest.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/MessageEncrypterTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/MessageEncrypterTest.java
index 6123b1403aeb63e7c2f33439e2a3e05c816696ba..8b15e222a12c06a9d665cc7ff9b2456d7b7b1a1f 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/MessageEncrypterTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/MessageEncrypterTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 import org.spongycastle.crypto.CryptoException;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordBasedKdfTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordBasedKdfTest.java
index c58d39ba834f0b78a66abcc97987a5184b38a510..f92b0fef69dc429ef45258b16a714c7fa90a179d 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordBasedKdfTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordBasedKdfTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
-import org.briarproject.bramble.TestUtils;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.util.Random;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImplTest.java
index 0b86262896c8234f44fa6af02e32d01d839ff4ce..28f7e4bd211d534790bbcc85e7233b7c547589eb 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImplTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_STRONG;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/SignatureTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/SignatureTest.java
index b2d64aad197fd26179245aaa83e0af1320996bc6..017ba3a3ba2896ef73e6ae5152ca718e2a1ac2ad 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/SignatureTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/SignatureTest.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestSeedProvider;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.KeyPair;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestSeedProvider;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamDecrypterImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamDecrypterImplTest.java
index f3cefc1363dc4d8f4fe121f82a1841581cb4d774..0a6a5f4c0ede9658a15fb50b1bbdf82c3d79e039 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamDecrypterImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamDecrypterImplTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.SecretKey;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.ByteUtils;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamEncrypterImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamEncrypterImplTest.java
index d0d9fd3a4aa4bcd9a4df76de426e9f70e01591bb..8ed35336d4523771f65848eb82fa3f5b7fb317b1 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamEncrypterImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/StreamEncrypterImplTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.SecretKey;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.io.ByteArrayOutputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipherTest.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipherTest.java
index 6dbfa85b34371dadb35c68caf6bebf67015d0c48..9ddcc9487c3336ab5a7091941b30c54cccb21ca2 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipherTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipherTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.crypto.SecretKey;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.briarproject.bramble.util.StringUtils;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java
index df658a551efe390d2515268f0e7dc53b88d3b7e0..f8e5fc070a4e9c32e6fa78184980334e5676290b 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/data/BdfReaderImplTest.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.data;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.StringUtils;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/data/BdfWriterImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/data/BdfWriterImplTest.java
index 478a047e7780672faacf5284f5f09337d34de104..c480c91c65048a116e8ac93647fb6123bb167134 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/data/BdfWriterImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/data/BdfWriterImplTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.data;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.StringUtils;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/data/MetadataEncoderParserIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/data/MetadataEncoderParserIntegrationTest.java
index 9d43ae8e5f17be4fa57375090ccbd8a164939d98..7fbdcb18d3523094b3fa916926a8fe5123199266 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/data/MetadataEncoderParserIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/data/MetadataEncoderParserIntegrationTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.data;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.db.Metadata;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/BasicH2Test.java b/bramble-core/src/test/java/org/briarproject/bramble/db/BasicH2Test.java
index 85de68c80d1294edb55c708fb938fed34312ea6f..da5d7aecfef96c8cabcc35d6d19907719a567904 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/BasicH2Test.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/BasicH2Test.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseComponentImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseComponentImplTest.java
index 62d0f83673d0b121a77fb9f4763c3e91456667c4..7c46cc6e59b0617a62cef606811441612fc8be19 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseComponentImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseComponentImplTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.event.ContactAddedEvent;
@@ -49,6 +47,8 @@ import org.briarproject.bramble.api.sync.event.MessagesSentEvent;
 import org.briarproject.bramble.api.transport.IncomingKeys;
 import org.briarproject.bramble.api.transport.OutgoingKeys;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/ExponentialBackoffTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/ExponentialBackoffTest.java
index e60cb5b43783da6359d51f6c60988213cfbe8580..6d1de7e364f00005f7b6c5292c0d2feab6a766d2 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/ExponentialBackoffTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/ExponentialBackoffTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/H2DatabaseTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/H2DatabaseTest.java
index adffded9fa03534919bc09627c57ffaf2008da16..3552beac7ea812f5405684894d695eabb7602a0e 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/H2DatabaseTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/H2DatabaseTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.crypto.SecretKey;
@@ -23,7 +21,9 @@ import org.briarproject.bramble.api.transport.IncomingKeys;
 import org.briarproject.bramble.api.transport.OutgoingKeys;
 import org.briarproject.bramble.api.transport.TransportKeys;
 import org.briarproject.bramble.system.SystemClock;
-import org.briarproject.bramble.TestDatabaseConfig;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestDatabaseConfig;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/LockFairnessTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/LockFairnessTest.java
index 3d4ff414a9df2f39f5aa04fe942a670c086c1895..5b0d376106045dade93e12b2d0aea64f08e6e38e 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/LockFairnessTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/LockFairnessTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.util.concurrent.CountDownLatch;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/TransactionIsolationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/TransactionIsolationTest.java
index 4226f2af5b67e55718b61c8d575f45adae372537..6596861cc3fcab926386c5fa8a4a6dc5f6c62021 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/TransactionIsolationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/TransactionIsolationTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java
index 35e8ffa7055eada1f7d4f9189717d4593c077371..fee5bc9fc1c3b24c1e38cb42f5f002de4a68e0fb 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/identity/IdentityManagerImplTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.identity;
 
-import org.briarproject.bramble.BrambleMockTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
@@ -11,6 +9,8 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
+import org.briarproject.bramble.test.BrambleMockTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocolTest.java b/bramble-core/src/test/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocolTest.java
index 0eab6958ca4690c604600652b186cc55b4fbfe85..25cff47783861f9cb6162d5e0248b968236a46c9 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocolTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocolTest.java
@@ -1,13 +1,13 @@
 package org.briarproject.bramble.keyagreement;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.keyagreement.Payload;
 import org.briarproject.bramble.api.keyagreement.PayloadEncoder;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.jmock.integration.junit4.JUnitRuleMockery;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/lifecycle/ShutdownManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/lifecycle/ShutdownManagerImplTest.java
index 9249bb4be717d1f2aa55396d8df940f90ed83e8c..f4fc1ed706b48adb8f1d89eeedb3bda6b0b9e155 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/lifecycle/ShutdownManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/lifecycle/ShutdownManagerImplTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.lifecycle;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.lifecycle.ShutdownManager;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.util.HashSet;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/BackoffImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/BackoffImplTest.java
index d356b86aac8c11aedfa883c3451cb4f873f641b7..09bf49726e3e0a27e5a15dc1cc003d01262b4ec4 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/BackoffImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/BackoffImplTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/ConnectionRegistryImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/ConnectionRegistryImplTest.java
index 9bc1895970db124c92fcead09a8bb64046986a54..dba85a6b2ab33bd16630810d25b4664a67a5b4c2 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/ConnectionRegistryImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/ConnectionRegistryImplTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.plugin.ConnectionRegistry;
@@ -9,6 +8,7 @@ import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent;
 import org.briarproject.bramble.api.plugin.event.ConnectionOpenedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/PluginManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/PluginManagerImplTest.java
index f4c6e650dcd964c57a4cec8c0c949a062dd59ad0..23a40ed20db4ae08451dcf22a12d58e512366ce6 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/PluginManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/PluginManagerImplTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.plugin.ConnectionManager;
 import org.briarproject.bramble.api.plugin.PluginConfig;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.ui.UiCallback;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.concurrent.Synchroniser;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/PollerTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/PollerTest.java
index 15c48fb1471485f09ae7e1ad82ce71ea4f44dcdb..89afcdf85f632796e35c71def0ff1e1e24dee112 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/PollerTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/PollerTest.java
@@ -1,8 +1,5 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.RunAction;
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.ImmediateExecutor;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.event.ContactStatusChangedEvent;
 import org.briarproject.bramble.api.plugin.ConnectionManager;
@@ -18,6 +15,9 @@ import org.briarproject.bramble.api.plugin.event.ConnectionOpenedEvent;
 import org.briarproject.bramble.api.plugin.event.TransportEnabledEvent;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.ImmediateExecutor;
+import org.briarproject.bramble.test.RunAction;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.legacy.ClassImposteriser;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
index 401d0da617cbf629ff8b4931475116d60c36dcea..a873ee829fea1eb39651ae952f2dc54d57503638 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.plugin.tcp;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementConnection;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java
index 9271772d5ba10ed8d11f0b3e6990b1c45d9ce547..3cf98a8c09d75ce2cf9651bde9bb117e0e78e8e7 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyManagerImplTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.properties;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.fail;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyValidatorTest.java b/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyValidatorTest.java
index 267d962e6c9472929a8df1b188a0ffdf07cc848a..7d48fa75df441379f93835eada7abfaa49580364 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyValidatorTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/properties/TransportPropertyValidatorTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.properties;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
@@ -14,6 +12,8 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Mockery;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/PacketReaderImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/PacketReaderImplTest.java
index 1f380e77d5c66bddc93b011b576ccb407ec2e8de..3d68494299824a783777ac8b1142596ff048fe77 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/PacketReaderImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/PacketReaderImplTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.UniqueId;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.ByteUtils;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/SimplexOutgoingSessionTest.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/SimplexOutgoingSessionTest.java
index 6dc90f0fd3f991b8f0e63d43ce457d52d140a051..2304b4053b1f0cbfef149ae67145522434a96a9f 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/SimplexOutgoingSessionTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/SimplexOutgoingSessionTest.java
@@ -1,8 +1,5 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.ImmediateExecutor;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.Transaction;
@@ -10,6 +7,9 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.sync.Ack;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.PacketWriter;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.ImmediateExecutor;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTest.java
index ceb51443089538067d34f5074f1bb809fed36d1a..3d895990968ed579fdcdf520c4cf0469bc9bf20e 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
@@ -22,6 +20,8 @@ import org.briarproject.bramble.api.sync.Request;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java
index 67155b40ceb1b56b1ac89dfac5b3301a98d64c32..6c0ffa19cb24562228d945305862a1718718c20c 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.TestSeedProviderModule;
 import org.briarproject.bramble.crypto.CryptoModule;
+import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.bramble.transport.TransportModule;
 
 import javax.inject.Singleton;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
index a7cb067c6fdeb99580fe9e82b5431b8a024567e7..b99c2f0627edfc5c0947a6a360b86e073f21140f 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
@@ -1,8 +1,5 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.ImmediateExecutor;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
@@ -22,6 +19,9 @@ import org.briarproject.bramble.api.sync.ValidationManager.IncomingMessageHook;
 import org.briarproject.bramble.api.sync.ValidationManager.MessageValidator;
 import org.briarproject.bramble.api.sync.ValidationManager.State;
 import org.briarproject.bramble.api.sync.event.MessageAddedEvent;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.ImmediateExecutor;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.ByteUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/system/LinuxSeedProviderTest.java b/bramble-core/src/test/java/org/briarproject/bramble/system/LinuxSeedProviderTest.java
index b4db19bad12d39c3c6ccfb4835a675a5fcfdf11f..0e0fe119c947427f93ce4e461f064cf31e7be5ef 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/system/LinuxSeedProviderTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/system/LinuxSeedProviderTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.Bytes;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.OsUtils;
 import org.junit.After;
 import org.junit.Before;
diff --git a/briar-core/src/test/java/org/briarproject/briar/CaptureArgumentAction.java b/bramble-core/src/test/java/org/briarproject/bramble/test/CaptureArgumentAction.java
similarity index 95%
rename from briar-core/src/test/java/org/briarproject/briar/CaptureArgumentAction.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/CaptureArgumentAction.java
index 34a5788fc9a934009b135879c3a034fdd0ad1423..b0463eab3a449a9a52aed58951044bdf124455f4 100644
--- a/briar-core/src/test/java/org/briarproject/briar/CaptureArgumentAction.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/CaptureArgumentAction.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar;
+package org.briarproject.bramble.test;
 
 import org.hamcrest.Description;
 import org.jmock.api.Action;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/ImmediateExecutor.java b/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
similarity index 86%
rename from bramble-api/src/test/java/org/briarproject/bramble/ImmediateExecutor.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
index 65ae6d14110ad73d128f0de10e8aac7115cb8a01..7d488ecc71f08a23823cfdf3f33ae6bf46aa0dcb 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/ImmediateExecutor.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/RunAction.java b/bramble-core/src/test/java/org/briarproject/bramble/test/RunAction.java
similarity index 91%
rename from bramble-core/src/test/java/org/briarproject/bramble/RunAction.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/RunAction.java
index 7ed4ca7717fe462eee9de468a3ce0d62dc632c05..0ec8d7ac8a61227ff1cb0c0db293f314ac4d144a 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/RunAction.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/RunAction.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.hamcrest.Description;
 import org.jmock.api.Action;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseConfig.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
similarity index 96%
rename from bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseConfig.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
index 3ed6fd70b2d0a65ce17c1824c66980e715885509..d6ee0325f70ff3fc03923d98ccabf92a6092ecfa 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseConfig.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DatabaseConfig;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseModule.java
similarity index 94%
rename from bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseModule.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseModule.java
index f3360471da4b554ea2f84a00b0d542fd7e9edc6c..e4f2f5585cdbf58da580ad964e773b76a7365288 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/TestDatabaseModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseModule.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
diff --git a/briar-core/src/test/java/org/briarproject/briar/TestLifecycleModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
similarity index 97%
rename from briar-core/src/test/java/org/briarproject/briar/TestLifecycleModule.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
index 7344aaf4b40e65da75ea0e71d2aefc83ed2e8a0a..ee8d5115e07b3285bb0ac5be2251878102d84935 100644
--- a/briar-core/src/test/java/org/briarproject/briar/TestLifecycleModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestLifecycleModule.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
diff --git a/briar-core/src/test/java/org/briarproject/briar/TestPluginConfigModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
similarity index 97%
rename from briar-core/src/test/java/org/briarproject/briar/TestPluginConfigModule.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
index ae5a4a2e358f515e689f00b365073f1b91cadc1e..5709770b5ed6de02739fba08d24dc27dd6a25bd2 100644
--- a/briar-core/src/test/java/org/briarproject/briar/TestPluginConfigModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/TestSeedProvider.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProvider.java
similarity index 87%
rename from bramble-api/src/test/java/org/briarproject/bramble/TestSeedProvider.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProvider.java
index 911ca2f5104e95e61e4ecaec5b508c58624b7d25..a149bec8b6ea8ab25f475e2ff5c447dc48b3a09d 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/TestSeedProvider.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProvider.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.SeedProvider;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/TestSeedProviderModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProviderModule.java
similarity index 87%
rename from bramble-api/src/test/java/org/briarproject/bramble/TestSeedProviderModule.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProviderModule.java
index eb5ccff38c21264479c7e163011e68a912cabfad..ce8650d264881ee17c3f6c9739045fdb2997dd27 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/TestSeedProviderModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSeedProviderModule.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.system.SeedProvider;
 
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/ValidatorTestCase.java b/bramble-core/src/test/java/org/briarproject/bramble/test/ValidatorTestCase.java
similarity index 97%
rename from bramble-api/src/test/java/org/briarproject/bramble/ValidatorTestCase.java
rename to bramble-core/src/test/java/org/briarproject/bramble/test/ValidatorTestCase.java
index 815451f3f75e2a56f7639f44d0da147dbcb929f7..07afb2e58b6e4f6f57031a7e79eebd7e6659b45e 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/ValidatorTestCase.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/ValidatorTestCase.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble;
+package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.MetadataEncoder;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/KeyManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/KeyManagerImplTest.java
index d4eed7a5357fe410a8afd21dfc39807df60866e6..340dfb1468ef6b38c3951cf247e19e948733cb20 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/KeyManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/KeyManagerImplTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.event.ContactRemovedEvent;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.concurrent.DeterministicExecutor;
@@ -24,10 +24,10 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.bramble.TestUtils.getSecretKey;
 import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getSecretKey;
 import static org.junit.Assert.assertEquals;
 
 public class KeyManagerImplTest extends BrambleTestCase {
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/ReorderingWindowTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/ReorderingWindowTest.java
index 83b24340f25ba7755f477c8a2f804f4dea838906..5031583575ecbeb32cf27560c38b5d3bf4c104f0 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/ReorderingWindowTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/ReorderingWindowTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.transport.ReorderingWindow.Change;
 import org.junit.Test;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderImplTest.java
index 6423988313ee3161763545047c6bd753ae8cf411..40ff0763105d6756b87752fc08af10dda68fef3c 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderImplTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderWriterIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderWriterIntegrationTest.java
index 85214cacb1ddf33300d02579775393a45e8cf081..e8bdcc0357da27b58a24d2aee8b5a199b760c11c 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderWriterIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamReaderWriterIntegrationTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamWriterImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamWriterImplTest.java
index c7d7a16d6c3b2876c1d8c9937e1d0e001ffc0a7a..b0db082ba8d4b968d0fe6f4bcd1e25929df6ba38 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamWriterImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/StreamWriterImplTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/TransportKeyManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/TransportKeyManagerImplTest.java
index 6bce11a8387ba5408dc1363fbab76aaa9cc4cdca..5962afcf5269e1df0a41925b7de2586db0dedff3 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/TransportKeyManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/TransportKeyManagerImplTest.java
@@ -1,8 +1,5 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.RunAction;
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
@@ -14,6 +11,9 @@ import org.briarproject.bramble.api.transport.IncomingKeys;
 import org.briarproject.bramble.api.transport.OutgoingKeys;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.RunAction;
+import org.briarproject.bramble.test.TestUtils;
 import org.hamcrest.Description;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/util/ByteUtilsTest.java b/bramble-core/src/test/java/org/briarproject/bramble/util/ByteUtilsTest.java
index a4fda13b8c3f19ccbad0c8ecc9a057a49cfdefcf..eef6c0b68aec1eab3f45f295efb00fb96d06cc81 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/util/ByteUtilsTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/util/ByteUtilsTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.briarproject.bramble.util.ByteUtils.MAX_16_BIT_UNSIGNED;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/util/StringUtilsTest.java b/bramble-core/src/test/java/org/briarproject/bramble/util/StringUtilsTest.java
index 140d654a4be35900499e22bb1e2f9c8356a9dbd4..f7042027d5d2ec2e8cb19c0abcffba49ac80365d 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/util/StringUtilsTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/util/StringUtilsTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertArrayEquals;
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/LinuxRemovableDriveFinderTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/LinuxRemovableDriveFinderTest.java
index 26afffe3b9c5ca6aabcdb5d97ffcce3e9958b1e6..b26bc77a889723b2a1808ff0d4c7f3276987b45f 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/LinuxRemovableDriveFinderTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/LinuxRemovableDriveFinderTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/MacRemovableDriveFinderTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/MacRemovableDriveFinderTest.java
index fbbddca405128745b892bb5797d29345988955db..db2cf210074017dec145affcbbb5a0b051a3d926 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/MacRemovableDriveFinderTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/MacRemovableDriveFinderTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/PollingRemovableDriveMonitorTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/PollingRemovableDriveMonitorTest.java
index a58fc2a533bb572f3ee4cd3131c5782e825fe3e3..9d8db1b84ddcc7743ee2bf91a6e6b62bf097e284 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/PollingRemovableDriveMonitorTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/PollingRemovableDriveMonitorTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.plugin.file.RemovableDriveMonitor.Callback;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import java.io.File;
@@ -41,7 +41,7 @@ public class PollingRemovableDriveMonitorTest extends BrambleTestCase {
 		};
 		// Create a callback that waits for two files
 		final CountDownLatch latch = new CountDownLatch(2);
-		final List<File> detected = new ArrayList<File>();
+		final List<File> detected = new ArrayList<>();
 		@NotNullByDefault
 		Callback callback = new Callback() {
 
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginTest.java
index d803b0a50e00543f47bd606a55c422a07e5707a2..101c74cf7796368a1995dcdd58d178f8833c96e7 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginTest.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.ImmediateExecutor;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginCallback;
 import org.briarproject.bramble.plugin.file.RemovableDriveMonitor.Callback;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.ImmediateExecutor;
+import org.briarproject.bramble.test.TestUtils;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.concurrent.Synchroniser;
@@ -73,7 +73,7 @@ public class RemovableDrivePluginTest extends BrambleTestCase {
 	public void testWriterIsNullIfNoDriveIsChosen() throws Exception {
 		final File drive1 = new File(testDir, "1");
 		final File drive2 = new File(testDir, "2");
-		final List<File> drives = new ArrayList<File>();
+		final List<File> drives = new ArrayList<>();
 		drives.add(drive1);
 		drives.add(drive2);
 
@@ -112,7 +112,7 @@ public class RemovableDrivePluginTest extends BrambleTestCase {
 	public void testWriterIsNullIfOutputDirDoesNotExist() throws Exception {
 		final File drive1 = new File(testDir, "1");
 		final File drive2 = new File(testDir, "2");
-		final List<File> drives = new ArrayList<File>();
+		final List<File> drives = new ArrayList<>();
 		drives.add(drive1);
 		drives.add(drive2);
 
@@ -151,7 +151,7 @@ public class RemovableDrivePluginTest extends BrambleTestCase {
 	public void testWriterIsNullIfOutputDirIsAFile() throws Exception {
 		final File drive1 = new File(testDir, "1");
 		final File drive2 = new File(testDir, "2");
-		final List<File> drives = new ArrayList<File>();
+		final List<File> drives = new ArrayList<>();
 		drives.add(drive1);
 		drives.add(drive2);
 		// Create drive1 as a file rather than a directory
@@ -192,7 +192,7 @@ public class RemovableDrivePluginTest extends BrambleTestCase {
 	public void testWriterIsNotNullIfOutputDirIsADir() throws Exception {
 		final File drive1 = new File(testDir, "1");
 		final File drive2 = new File(testDir, "2");
-		final List<File> drives = new ArrayList<File>();
+		final List<File> drives = new ArrayList<>();
 		drives.add(drive1);
 		drives.add(drive2);
 		// Create drive1 as a directory
@@ -236,7 +236,7 @@ public class RemovableDrivePluginTest extends BrambleTestCase {
 	public void testWritingToWriter() throws Exception {
 		final File drive1 = new File(testDir, "1");
 		final File drive2 = new File(testDir, "2");
-		final List<File> drives = new ArrayList<File>();
+		final List<File> drives = new ArrayList<>();
 		drives.add(drive1);
 		drives.add(drive2);
 		// Create drive1 as a directory
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/UnixRemovableDriveMonitorTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/UnixRemovableDriveMonitorTest.java
index 83d26f1df3b2199ec9906d4c53f0f3a23501ec95..0a43ba1538ca19a3bc14bf33cad82614688a13a0 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/UnixRemovableDriveMonitorTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/file/UnixRemovableDriveMonitorTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.BrambleTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.plugin.file.RemovableDriveMonitor.Callback;
+import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.OsUtils;
 import org.junit.After;
 import org.junit.Before;
@@ -61,7 +61,7 @@ public class UnixRemovableDriveMonitorTest extends BrambleTestCase {
 			return;
 		}
 		// Create a callback that will wait for two files before stopping
-		final List<File> detected = new ArrayList<File>();
+		final List<File> detected = new ArrayList<>();
 		final CountDownLatch latch = new CountDownLatch(2);
 		@NotNullByDefault
 		final Callback callback = new Callback() {
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/CountryCodesTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/CountryCodesTest.java
index 02b0456994f389e7a19c37609d2dbd0bf37ae82f..0f560b089a6f82f3783bf7c80c885b4ea001c28f 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/CountryCodesTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/CountryCodesTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
diff --git a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/ModemPluginTest.java b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/ModemPluginTest.java
index 64df9fce6fc3791bccdae1de50e72a8085a21005..c516acb175a5d9ba3056b4515fc9c24ec2b1b614 100644
--- a/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/ModemPluginTest.java
+++ b/bramble-j2se/src/test/java/org/briarproject/bramble/plugin/modem/ModemPluginTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.BrambleTestCase;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.bramble.test.BrambleTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
index e67450474e4586ff9e2c4742fb49afe3a76b7a67..69eccd479b0ce3fee9cdcc09bf6d22d36078509e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
@@ -2,7 +2,6 @@ package org.briarproject.briar.android.blog;
 
 import android.support.annotation.UiThread;
 
-import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
index 2f219ea866e7358df3f890b06eda8b35b7a53513..2655c7ff33aca6c0aae2778fd72527daf1c45124 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
@@ -2,9 +2,6 @@ package org.briarproject.briar.android.blog;
 
 import android.os.Bundle;
 import android.support.annotation.UiThread;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
@@ -13,7 +10,6 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
 
-import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 @UiThread
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
index 81d9ce794c9504a1efe69d7ac68059558093f217..b04834b41a51b09e4ba9df357ca6a08c61c679c4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
@@ -4,7 +4,6 @@ import android.support.annotation.UiThread;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.DestroyableContext;
 
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
index 700beee63ec11b0a12906576dd99d8385b173894..c41df9f238704a16784b2c8c9437a32b0f664146 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
@@ -1,7 +1,6 @@
 package org.briarproject.briar.android.controller;
 
 import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java
index 694d78927ed07ef8eaf68c2dd0ff025de7b0872f..decf81f76b935f086cf17a75286d771f9e88d916 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupActivity.java
@@ -35,7 +35,7 @@ public class SetupActivity extends BaseActivity implements OnClickListener,
 		OnEditorActionListener {
 
 	@Inject
-	protected SetupController setupController;
+	SetupController setupController;
 
 	private TextInputLayout nicknameEntryWrapper;
 	private TextInputLayout passwordEntryWrapper;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
index e9edf9e839916bb2e935533ec6d111784d99ab47..057da939e1a8449134691f3f2811c8b5725308b8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
@@ -9,7 +9,6 @@ import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 
 import java.util.Collection;
-import java.util.HashSet;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
index 2d0c4f0af83af120b37d3575ca5e993821bd3cb1..5258a3210e3e258a220eeebe06707f1d5077597c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
 import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
-import org.briarproject.briar.R;
 import org.briarproject.briar.android.contactselection.ContactSelectorActivity;
 import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener;
 
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/TestSetupActivity.java b/briar-android/src/test/java/org/briarproject/briar/android/TestSetupActivity.java
deleted file mode 100644
index d9c78c800405d3beb8775814f8cb353fba0fbf09..0000000000000000000000000000000000000000
--- a/briar-android/src/test/java/org/briarproject/briar/android/TestSetupActivity.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.briarproject.briar.android;
-
-import org.briarproject.briar.android.login.SetupActivity;
-import org.briarproject.briar.android.login.SetupController;
-
-/**
- * This class exposes the SetupController and offers the possibility to
- * override it.
- */
-public class TestSetupActivity extends SetupActivity {
-
-	public SetupController getController() {
-		return setupController;
-	}
-
-	public void setController(SetupController setupController) {
-		this.setupController = setupController;
-	}
-}
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
index 11810fb1caae3cc212f04b0dded7cb7063e0374a..5773f0d2aa518bb83525871336c23ece4abba6a0 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
@@ -4,11 +4,11 @@ import android.content.Intent;
 
 import junit.framework.Assert;
 
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.BuildConfig;
 import org.briarproject.briar.android.TestBriarApplication;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/SetupActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java
similarity index 98%
rename from briar-android/src/test/java/org/briarproject/briar/android/SetupActivityTest.java
rename to briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java
index d6c445eb85f72cdcc9b44b25ebcae1fd10d37126..86472493c7cfd2bfb5aa77635b4f10e3836bf372 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/SetupActivityTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar.android;
+package org.briarproject.briar.android.login;
 
 import android.content.Context;
 import android.content.Intent;
@@ -12,9 +12,8 @@ import com.google.common.base.Strings;
 import org.briarproject.bramble.api.identity.AuthorConstants;
 import org.briarproject.briar.BuildConfig;
 import org.briarproject.briar.R;
+import org.briarproject.briar.android.TestBriarApplication;
 import org.briarproject.briar.android.controller.handler.ResultHandler;
-import org.briarproject.briar.android.login.SetupController;
-import org.briarproject.briar.android.login.StrengthMeter;
 import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java b/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..0595329be7f367f8cdc9edaa66b9e0395a52f8b1
--- /dev/null
+++ b/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java
@@ -0,0 +1,16 @@
+package org.briarproject.briar.android.login;
+
+/**
+ * This class exposes the SetupController and offers the possibility to
+ * override it.
+ */
+public class TestSetupActivity extends SetupActivity {
+
+	SetupController getController() {
+		return setupController;
+	}
+
+	void setController(SetupController setupController) {
+		this.setupController = setupController;
+	}
+}
diff --git a/briar-core/build.gradle b/briar-core/build.gradle
index 74691734ca615cc6fe3e3291fcc622abd19d613f..0f8177975f6adb80b41db8cb858360521cce30ea 100644
--- a/briar-core/build.gradle
+++ b/briar-core/build.gradle
@@ -16,8 +16,8 @@ dependencies {
 	compile 'com.squareup.okhttp3:okhttp:3.3.1'
 	compile 'org.jsoup:jsoup:1.9.2'
 
-	testCompile project(':bramble-core') // TODO get rid of this dependency
-
+	testCompile project(':bramble-core')
+	testCompile project(path: ':bramble-core', configuration: 'testOutput')
 	testCompile project(path: ':bramble-api', configuration: 'testOutput')
 	testCompile 'net.jodah:concurrentunit:0.4.2'
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeEngine.java
index f93fb0aa4164320e717e9b24f8569cd418acad52..74ecc946a3215c373be52709912319e393e76222 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeEngine.java
@@ -17,7 +17,6 @@ import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.logging.Logger;
@@ -43,7 +42,6 @@ import static org.briarproject.briar.api.introduction.IntroductionConstants.CONT
 import static org.briarproject.briar.api.introduction.IntroductionConstants.EXISTS;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.E_PUBLIC_KEY;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.GROUP_ID;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.INTRODUCER;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.MAC;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.MESSAGE_ID;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.MESSAGE_TIME;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
index 44ba7496069dd9d22f0b02f4a2270de4f9ed53a8..c96d0df9fd422498632deaf06831dc4c48fef839 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
@@ -37,9 +37,9 @@ import org.briarproject.briar.api.sharing.InvitationMessage;
 import org.briarproject.briar.api.sharing.Shareable;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
 import org.briarproject.briar.api.sharing.SharingManager;
+import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
 import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent;
 import org.briarproject.briar.api.sharing.event.InvitationResponseReceivedEvent;
-import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
 import org.briarproject.briar.client.ConversationClientImpl;
 
 import java.io.IOException;
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
index ee2a275226b6bb0c5f5b55d8104b420c4762020a..e2b5e8ef5206d162cc029c3cd945362f894eaa96 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.blog;
 
-import org.briarproject.briar.BriarTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.Contact;
@@ -27,6 +26,7 @@ import org.briarproject.briar.api.blog.BlogPost;
 import org.briarproject.briar.api.blog.BlogPostFactory;
 import org.briarproject.briar.api.blog.BlogPostHeader;
 import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
@@ -34,11 +34,11 @@ import org.junit.Test;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.identity.Author.Status.VERIFIED;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR_ID;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR_NAME;
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
index 8feaeaa4e66ef36efed3eb9053f84f71917a10db..7c7a681804af042470aa4285f7d3511cc62102c5 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
@@ -1,16 +1,16 @@
 package org.briarproject.briar.blog;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogCommentHeader;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogPost;
 import org.briarproject.briar.api.blog.BlogPostHeader;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -21,7 +21,7 @@ import java.util.Iterator;
 
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertNotNull;
-import static org.briarproject.bramble.TestUtils.getRandomString;
+import static org.briarproject.bramble.test.TestUtils.getRandomString;
 import static org.briarproject.briar.api.blog.MessageType.COMMENT;
 import static org.briarproject.briar.api.blog.MessageType.POST;
 import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
index 8bc1c865ccab215d04f381e3c21d2f1e68c896f9..1ac77a550e8d3737eadd84e447e9981abb0d443f 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.blog;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
@@ -19,8 +17,10 @@ import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.system.SystemClock;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogFactory;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/briar-core/src/test/java/org/briarproject/briar/client/MessageQueueManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/client/MessageQueueManagerImplTest.java
index 0398163611d7be820ce7b8e5bf35927b5f669e09..19878e4ad37e47a75b30330541cbadc2a0416997 100644
--- a/briar-core/src/test/java/org/briarproject/briar/client/MessageQueueManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/client/MessageQueueManagerImplTest.java
@@ -1,8 +1,5 @@
 package org.briarproject.briar.client;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.briar.CaptureArgumentAction;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
@@ -19,11 +16,14 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.ValidationManager;
 import org.briarproject.bramble.api.sync.ValidationManager.IncomingMessageHook;
 import org.briarproject.bramble.api.sync.ValidationManager.MessageValidator;
+import org.briarproject.bramble.test.CaptureArgumentAction;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.ByteUtils;
 import org.briarproject.briar.api.client.MessageQueueManager.IncomingQueueMessageHook;
 import org.briarproject.briar.api.client.MessageQueueManager.QueueMessageValidator;
 import org.briarproject.briar.api.client.QueueMessage;
 import org.briarproject.briar.api.client.QueueMessageFactory;
+import org.briarproject.briar.test.BriarTestCase;
 import org.hamcrest.Description;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java b/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
index 87c8f5a54bb700e6e5f88cd91aacf9c873cffadf..b1a457c8a799598a528eefe7c083b12f4e43d8c9 100644
--- a/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.client;
 
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageTree;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerImplTest.java
index f8a5b83548fddf340d3dd1c35c56f126035d9b74..084da117f64df425a7e57a9c8cde8bb91f6a56c5 100644
--- a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerImplTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.forum;
 
-import org.briarproject.briar.BriarTestCase;
+import org.briarproject.briar.test.BriarTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.fail;
diff --git a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
index f8a0f119d5f8e187ade887433a9aa67c83c5b009..9ca8805f20819998ad4df22c41a798315d10e19e 100644
--- a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
@@ -1,15 +1,15 @@
 package org.briarproject.briar.forum;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.sync.GroupId;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumManager;
 import org.briarproject.briar.api.forum.ForumPost;
 import org.briarproject.briar.api.forum.ForumPostHeader;
 import org.briarproject.briar.api.forum.ForumSharingManager;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -17,7 +17,7 @@ import java.util.Collection;
 
 import javax.annotation.Nullable;
 
-import static org.briarproject.briar.BriarTestUtils.assertGroupCount;
+import static org.briarproject.briar.test.BriarTestUtils.assertGroupCount;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
diff --git a/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
index 0fe57588465f83de465b7a9f1e5f1c782ed037ae..d61a16d1250bcfbd33f44c65a69bf3e160344640 100644
--- a/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.forum;
 
-import org.briarproject.bramble.TestUtils;
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.client.BdfMessageContext;
@@ -11,6 +9,8 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.TestUtils;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.jmock.Expectations;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroduceeManagerTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroduceeManagerTest.java
index b424040ec5c62f4f4c4ac47ee6dadcfb6fbf426a..30b58d5871f52003a751d926d442cc23c60e40b4 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroduceeManagerTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroduceeManagerTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
@@ -27,8 +25,10 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.IntroduceeProtocolState;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.legacy.ClassImposteriser;
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroducerManagerTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroducerManagerTest.java
index 1861eeef5a589cd9d2cfc1845cdf01fe7a2bea65..1eb26692f53b1b6d2f4e88e0c9e3d202048522ac 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroducerManagerTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroducerManagerTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
@@ -20,6 +18,8 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.TestUtils;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.legacy.ClassImposteriser;
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
index 8141dd0f4e92bc97abf7f59ea4deb8303e1b50f8..06ff73e6838565efdd72f4b4e3df173aebb001fd 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
@@ -2,8 +2,6 @@ package org.briarproject.briar.introduction;
 
 import net.jodah.concurrentunit.Waiter;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.Contact;
@@ -26,7 +24,8 @@ import org.briarproject.bramble.api.properties.TransportPropertyManager;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.briar.BriarIntegrationTest;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.IntroductionManager;
 import org.briarproject.briar.api.introduction.IntroductionMessage;
@@ -35,6 +34,7 @@ import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionSucceededEvent;
+import org.briarproject.briar.test.BriarIntegrationTest;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -51,9 +51,8 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import static org.briarproject.briar.TestPluginConfigModule.TRANSPORT_ID;
-import static org.briarproject.briar.BriarTestUtils.assertGroupCount;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.bramble.test.TestPluginConfigModule.TRANSPORT_ID;
 import static org.briarproject.briar.api.client.MessageQueueManager.QUEUE_STATE_KEY;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.E_PUBLIC_KEY;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.GROUP_ID;
@@ -70,6 +69,7 @@ import static org.briarproject.briar.api.introduction.IntroductionConstants.TYPE
 import static org.briarproject.briar.api.introduction.IntroductionConstants.TYPE_REQUEST;
 import static org.briarproject.briar.api.introduction.IntroductionConstants.TYPE_RESPONSE;
 import static org.briarproject.briar.introduction.IntroduceeManager.SIGNING_LABEL_RESPONSE;
+import static org.briarproject.briar.test.BriarTestUtils.assertGroupCount;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
index 7528bd1a3abfbc301668557396470e4cc5d4d107..538d4def320ba2cbbbea1e9a1cd0150bf77f7a4d 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
@@ -1,8 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.briar.TestPluginConfigModule;
-import org.briarproject.bramble.TestSeedProviderModule;
 import org.briarproject.bramble.client.ClientModule;
 import org.briarproject.bramble.contact.ContactModule;
 import org.briarproject.bramble.crypto.CryptoModule;
@@ -14,8 +11,10 @@ import org.briarproject.bramble.lifecycle.LifecycleModule;
 import org.briarproject.bramble.properties.PropertiesModule;
 import org.briarproject.bramble.sync.SyncModule;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestPluginConfigModule;
+import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.bramble.transport.TransportModule;
-import org.briarproject.briar.BriarIntegrationTestComponent;
 import org.briarproject.briar.blog.BlogModule;
 import org.briarproject.briar.client.BriarClientModule;
 import org.briarproject.briar.forum.ForumModule;
@@ -23,6 +22,7 @@ import org.briarproject.briar.messaging.MessagingModule;
 import org.briarproject.briar.privategroup.PrivateGroupModule;
 import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
 import org.briarproject.briar.sharing.SharingModule;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionManagerImplTest.java
index 04566982fcd310e0666493967fec7e853cdbbe28..20673e7a5ada0ba8682e90c4c55421167d614192 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionManagerImplTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.Contact;
@@ -21,8 +19,10 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.MessageStatus;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.legacy.ClassImposteriser;
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
index 5ea72f4d379b4888ba881a9187876a3cae118e83..fd76151097460a2296f7be5764d955c8b391fbaf 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
@@ -16,7 +14,9 @@ import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.system.SystemClock;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Mockery;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageSenderTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageSenderTest.java
index 194d24eff51494e3cc3d6319b334fc35ece891d2..2cfe9e712e04a85265e8e4ec2454fcf180796894 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageSenderTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageSenderTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.briar.BriarTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
@@ -16,8 +14,10 @@ import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageQueueManager;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.briar.test.BriarTestCase;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.junit.Test;
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
index b7d522f39bbbb45703dae8b9fd92467ee359af3c..79197bf4393fb6b58d97da582c57df2eb6736324 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.PrivateKey;
@@ -9,21 +8,22 @@ import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.util.StringUtils;
-import org.briarproject.briar.BriarTestCase;
 import org.briarproject.briar.api.forum.ForumConstants;
 import org.briarproject.briar.api.forum.ForumPost;
 import org.briarproject.briar.api.forum.ForumPostFactory;
 import org.briarproject.briar.api.messaging.PrivateMessage;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
+import org.briarproject.briar.test.BriarTestCase;
 import org.junit.Test;
 
 import javax.inject.Inject;
 
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.api.sync.SyncConstants.MAX_PACKET_PAYLOAD_LENGTH;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
 import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
 import static org.junit.Assert.assertTrue;
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
index 3019c0acaa76f694967dc10682185fffb64afd3a..2c91a0bd87bb4ac536309505b2620d22b8ff12e8 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
@@ -1,8 +1,5 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.briar.TestLifecycleModule;
-import org.briarproject.bramble.TestSeedProviderModule;
 import org.briarproject.bramble.client.ClientModule;
 import org.briarproject.bramble.crypto.CryptoModule;
 import org.briarproject.bramble.data.DataModule;
@@ -11,6 +8,9 @@ import org.briarproject.bramble.event.EventModule;
 import org.briarproject.bramble.identity.IdentityModule;
 import org.briarproject.bramble.sync.SyncModule;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestLifecycleModule;
+import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.briar.client.BriarClientModule;
 import org.briarproject.briar.forum.ForumModule;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessagingManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessagingManagerImplTest.java
index 4aaf3e8ede1dddd6942f86e6ac35de58d7793b49..a9d3043d88fe4feaa48e005ec5115ef5dc7daf80 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessagingManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessagingManagerImplTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.briar.BriarTestCase;
+import org.briarproject.briar.test.BriarTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.fail;
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
index cb9c2af07864ea1bb2ec6cec0ccc5732e8edd5fc..ef776d726e16cc8a53f5c1abfd08e49b049932a8 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.bramble.TestUtils;
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.BdfMessageContext;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
+import org.briarproject.bramble.test.TestUtils;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.junit.Test;
 
 import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
index 023ec5c2a4b158c1e0d8dc3fa41e793decbab5b8..b12b951cf25ca8db5ac18fba5540870b31f07326 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.crypto.SecretKey;
@@ -22,10 +20,12 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
 import org.briarproject.bramble.system.SystemModule;
-import org.briarproject.briar.BriarTestCase;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.messaging.MessagingManager;
 import org.briarproject.briar.api.messaging.PrivateMessage;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
+import org.briarproject.briar.test.BriarTestCase;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -38,8 +38,8 @@ import java.io.OutputStream;
 
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENGTH;
-import static org.briarproject.briar.TestPluginConfigModule.MAX_LATENCY;
-import static org.briarproject.briar.TestPluginConfigModule.TRANSPORT_ID;
+import static org.briarproject.bramble.test.TestPluginConfigModule.MAX_LATENCY;
+import static org.briarproject.bramble.test.TestPluginConfigModule.TRANSPORT_ID;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java
index a459316521bb685db054203337c13a29fbca25d1..085d28ae1ceff45921da742e71bfc856d1295e5e 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java
@@ -1,8 +1,5 @@
 package org.briarproject.briar.messaging;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.briar.TestPluginConfigModule;
-import org.briarproject.bramble.TestSeedProviderModule;
 import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.identity.IdentityManager;
@@ -21,6 +18,9 @@ import org.briarproject.bramble.identity.IdentityModule;
 import org.briarproject.bramble.lifecycle.LifecycleModule;
 import org.briarproject.bramble.sync.SyncModule;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestPluginConfigModule;
+import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.bramble.transport.TransportModule;
 import org.briarproject.briar.api.messaging.MessagingManager;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupInvitationIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupInvitationIntegrationTest.java
index 92addf7a973b950db3eced913f2ef328a7bd2158..83eb59003fca5f49a6030a33b90981c29cbcaac5 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupInvitationIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupInvitationIntegrationTest.java
@@ -1,11 +1,8 @@
 package org.briarproject.briar.privategroup;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.sync.Group;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.privategroup.GroupMessage;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
@@ -15,6 +12,9 @@ import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
 import org.briarproject.briar.api.sharing.InvitationMessage;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -22,7 +22,7 @@ import java.util.Collection;
 
 import javax.annotation.Nullable;
 
-import static org.briarproject.briar.BriarTestUtils.assertGroupCount;
+import static org.briarproject.briar.test.BriarTestUtils.assertGroupCount;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
index e8e9bbb8cc4f8e608c042af72ceab84c947ff250..a4cf4603b852dd4b700fae5223485ea694c6eea4 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.privategroup;
 
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.BdfMessageContext;
 import org.briarproject.bramble.api.data.BdfDictionary;
@@ -9,6 +8,7 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.briarproject.briar.api.privategroup.MessageType;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
@@ -21,12 +21,12 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.bramble.TestUtils.getRandomString;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getRandomString;
 import static org.briarproject.briar.api.privategroup.GroupMessageFactory.SIGNING_LABEL_JOIN;
 import static org.briarproject.briar.api.privategroup.GroupMessageFactory.SIGNING_LABEL_POST;
 import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
index e9efabdf780056e6912a9532ab1a75d40a7bb031..2d384dac7e053f51ae7d92074d63b25ee7874bfd 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
@@ -1,15 +1,12 @@
 package org.briarproject.briar.privategroup;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.privategroup.GroupMember;
 import org.briarproject.briar.api.privategroup.GroupMessage;
 import org.briarproject.briar.api.privategroup.GroupMessageHeader;
@@ -17,6 +14,9 @@ import org.briarproject.briar.api.privategroup.JoinMessageHeader;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
index a6d8d0c28a20674e0e727bb9bcbc474286b45ae6..943c4dabe513b0d3d1f7d11c7d1d4ce39113ab41 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
@@ -1,14 +1,11 @@
 package org.briarproject.briar.privategroup;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
 import org.briarproject.briar.api.privategroup.GroupMember;
 import org.briarproject.briar.api.privategroup.GroupMessage;
@@ -16,15 +13,18 @@ import org.briarproject.briar.api.privategroup.GroupMessageHeader;
 import org.briarproject.briar.api.privategroup.JoinMessageHeader;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Test;
 
 import java.util.Collection;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.identity.Author.Status.VERIFIED;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
 import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_CONTACT;
 import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_US;
@@ -42,6 +42,7 @@ public class PrivateGroupManagerIntegrationTest
 	private PrivateGroupManager groupManager0, groupManager1, groupManager2;
 
 	@Before
+	@Override
 	public void setUp() throws Exception {
 		super.setUp();
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
index 69422fb832e8702e1f8a3f7f0eb80819c4f70916..9ce107eee18c71b1660a108f0b9ab3bd0020cc1d 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.BrambleMockTestCase;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.bramble.test.BrambleMockTestCase;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.privategroup.GroupMessageFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
@@ -23,9 +23,9 @@ import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.jmock.Expectations;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.briar.api.privategroup.PrivateGroupManager.*;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_ID;
 import static org.briarproject.briar.privategroup.invitation.GroupInvitationConstants.GROUP_KEY_CONTACT_ID;
 import static org.briarproject.briar.privategroup.invitation.MessageType.ABORT;
 import static org.briarproject.briar.privategroup.invitation.MessageType.INVITE;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
index 3456b263d12d8e3556762c1e283182adeb283e68..d116e018d05572872bb2bc82af768728f585144f 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
@@ -5,9 +5,9 @@ import org.briarproject.briar.api.client.ProtocolStateException;
 import org.jmock.Expectations;
 import org.junit.Test;
 
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.privategroup.invitation.CreatorState.DISSOLVED;
 import static org.briarproject.briar.privategroup.invitation.CreatorState.ERROR;
 import static org.briarproject.briar.privategroup.invitation.CreatorState.INVITED;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
index 4f7f242f90a714030e399c7b2b9eeb908f677d91..aa1f95ae614b9248f9296d7739e36f29ff6ce56b 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
@@ -1,7 +1,5 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.BrambleMockTestCase;
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.client.ContactGroupFactory;
@@ -21,6 +19,8 @@ import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.BrambleMockTestCase;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
@@ -44,11 +44,11 @@ import java.util.Map;
 import javax.annotation.Nullable;
 
 import static junit.framework.TestCase.fail;
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.bramble.TestUtils.getRandomString;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
 import static org.briarproject.bramble.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getRandomString;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_ID;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
index 077208984cd86f826254b59a8bdd88f0c5f2fb00..fe79b36784dbb412633e331e15442e551a786f4c 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.client.BdfMessageContext;
@@ -11,6 +10,7 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.jmock.Expectations;
@@ -18,12 +18,12 @@ import org.junit.Test;
 
 import java.security.GeneralSecurityException;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
-import static org.briarproject.bramble.TestUtils.getRandomString;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
+import static org.briarproject.bramble.test.TestUtils.getRandomString;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
index d45ec461b7f64671075dc675a940e905933d60df..bc83f9053fb1c3a989186e78efa85762b7023dde 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
@@ -17,11 +17,11 @@ import org.junit.Test;
 import java.util.Collections;
 import java.util.Map;
 
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
 import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.ACCEPTED;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.DISSOLVED;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.ERROR;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngineTest.java
index 00fac93a8821b88545be27fd8d3d283c369a5a47..fb3ebb49a71e89b40eb126a51ebe83bb20190f5c 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngineTest.java
@@ -5,10 +5,10 @@ import org.briarproject.briar.api.client.ProtocolStateException;
 import org.jmock.Expectations;
 import org.junit.Test;
 
-import static org.briarproject.bramble.TestUtils.getRandomId;
 import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
 import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
 import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
+import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.briar.privategroup.invitation.PeerState.AWAIT_MEMBER;
 import static org.briarproject.briar.privategroup.invitation.PeerState.BOTH_JOINED;
 import static org.briarproject.briar.privategroup.invitation.PeerState.ERROR;
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
index 58fc86ee2ba9d9fa513de9a7b76f08ca56c7dc51..e5e65f94f9256cc30cf72e86b1bdf548235b1638 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
@@ -2,7 +2,6 @@ package org.briarproject.briar.sharing;
 
 import net.jodah.concurrentunit.Waiter;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchGroupException;
@@ -10,9 +9,7 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogInvitationRequest;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
@@ -21,6 +18,9 @@ import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.sharing.InvitationMessage;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -30,8 +30,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import static org.briarproject.briar.BriarTestUtils.assertGroupCount;
 import static org.briarproject.briar.api.blog.BlogSharingManager.CLIENT_ID;
+import static org.briarproject.briar.test.BriarTestUtils.assertGroupCount;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
index 8e6c2dcb44f45041b1f38d146e34862b0524d0d0..72c0156b20f614d8ef8960743fe01840436a5641 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
@@ -2,7 +2,6 @@ package org.briarproject.briar.sharing;
 
 import net.jodah.concurrentunit.Waiter;
 
-import org.briarproject.bramble.TestDatabaseModule;
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.data.BdfList;
@@ -13,9 +12,7 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
-import org.briarproject.briar.BriarIntegrationTest;
-import org.briarproject.briar.BriarIntegrationTestComponent;
-import org.briarproject.briar.DaggerBriarIntegrationTestComponent;
+import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.client.MessageQueueManager;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.forum.Forum;
@@ -29,6 +26,9 @@ import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEven
 import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.sharing.InvitationMessage;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
+import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.briar.test.BriarIntegrationTestComponent;
+import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -39,8 +39,8 @@ import java.util.Collection;
 import java.util.List;
 
 import static junit.framework.Assert.assertNotNull;
-import static org.briarproject.bramble.TestUtils.getRandomBytes;
-import static org.briarproject.bramble.TestUtils.getRandomString;
+import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
+import static org.briarproject.bramble.test.TestUtils.getRandomString;
 import static org.briarproject.briar.api.forum.ForumConstants.FORUM_SALT_LENGTH;
 import static org.briarproject.briar.api.forum.ForumSharingManager.CLIENT_ID;
 import static org.briarproject.briar.api.sharing.SharingConstants.SHARE_MSG_TYPE_INVITATION;
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
index 104a1962d4adca3612eab2acb11ffa9a869a563c..52887134cf3c0945aac3d2ef02a4d5bc1bdfb7b2 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
@@ -1,12 +1,12 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.TestUtils;
-import org.briarproject.bramble.ValidatorTestCase;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.client.BdfMessageContext;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
+import org.briarproject.bramble.test.TestUtils;
+import org.briarproject.bramble.test.ValidatorTestCase;
 import org.briarproject.briar.api.client.SessionId;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/SharingManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/SharingManagerImplTest.java
index b29ddbab65e90498f39300b89bbcac284c48f5a5..e38df1992996f21a252022c2e274a2a668dc4a38 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/SharingManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/SharingManagerImplTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.briar.BriarTestCase;
+import org.briarproject.briar.test.BriarTestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.fail;
diff --git a/briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
similarity index 97%
rename from briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTest.java
rename to briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
index 454d79ebc3547eb85af8147b615f4a0554dd5814..7d216adca00b13d03793f98d37623b8453417b54 100644
--- a/briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
@@ -1,8 +1,7 @@
-package org.briarproject.briar;
+package org.briarproject.briar.test;
 
 import net.jodah.concurrentunit.Waiter;
 
-import org.briarproject.bramble.TestUtils;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.client.ContactGroupFactory;
 import org.briarproject.bramble.api.contact.Contact;
@@ -30,6 +29,8 @@ import org.briarproject.bramble.lifecycle.LifecycleModule;
 import org.briarproject.bramble.properties.PropertiesModule;
 import org.briarproject.bramble.sync.SyncModule;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestPluginConfigModule;
+import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.bramble.transport.TransportModule;
 import org.briarproject.briar.api.blog.BlogFactory;
 import org.briarproject.briar.api.blog.BlogPostFactory;
@@ -59,11 +60,10 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import static junit.framework.Assert.assertNotNull;
-import static org.briarproject.bramble.TestUtils.getSecretKey;
 import static org.briarproject.bramble.api.sync.ValidationManager.State.DELIVERED;
 import static org.briarproject.bramble.api.sync.ValidationManager.State.INVALID;
 import static org.briarproject.bramble.api.sync.ValidationManager.State.PENDING;
-import static org.briarproject.briar.TestPluginConfigModule.MAX_LATENCY;
+import static org.briarproject.bramble.test.TestUtils.getSecretKey;
 import static org.junit.Assert.assertTrue;
 
 @MethodsNotNullByDefault
@@ -325,7 +325,7 @@ public abstract class BriarIntegrationTest<C extends BriarIntegrationTestCompone
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		// Create an outgoing sync session
 		SyncSession sessionFrom =
-				fromSync.createSimplexOutgoingSession(toId, MAX_LATENCY, out);
+				fromSync.createSimplexOutgoingSession(toId, TestPluginConfigModule.MAX_LATENCY, out);
 		// Write whatever needs to be written
 		sessionFrom.run();
 		out.close();
diff --git a/briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
similarity index 95%
rename from briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTestComponent.java
rename to briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
index 1a39d901a7c29e8a3effa195eab63f51a7df5ca7..5f036e6ee5603b23992a751235c13d124cab6e72 100644
--- a/briar-core/src/test/java/org/briarproject/briar/BriarIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
@@ -1,7 +1,5 @@
-package org.briarproject.briar;
+package org.briarproject.briar.test;
 
-import org.briarproject.bramble.TestDatabaseModule;
-import org.briarproject.bramble.TestSeedProviderModule;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.db.DatabaseComponent;
@@ -21,6 +19,9 @@ import org.briarproject.bramble.lifecycle.LifecycleModule;
 import org.briarproject.bramble.properties.PropertiesModule;
 import org.briarproject.bramble.sync.SyncModule;
 import org.briarproject.bramble.system.SystemModule;
+import org.briarproject.bramble.test.TestDatabaseModule;
+import org.briarproject.bramble.test.TestPluginConfigModule;
+import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.bramble.transport.TransportModule;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogSharingManager;
diff --git a/briar-core/src/test/java/org/briarproject/briar/BriarTestCase.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarTestCase.java
similarity index 54%
rename from briar-core/src/test/java/org/briarproject/briar/BriarTestCase.java
rename to briar-core/src/test/java/org/briarproject/briar/test/BriarTestCase.java
index 5523fdd0a9b76ddc69221c318520a3c453cae42a..afd5d4be3bebf9dbc44f245a013df172ab8432a5 100644
--- a/briar-core/src/test/java/org/briarproject/briar/BriarTestCase.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarTestCase.java
@@ -1,6 +1,6 @@
-package org.briarproject.briar;
+package org.briarproject.briar.test;
 
-import org.briarproject.bramble.BrambleTestCase;
+import org.briarproject.bramble.test.BrambleTestCase;
 
 public abstract class BriarTestCase extends BrambleTestCase {
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/BriarTestUtils.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarTestUtils.java
similarity index 96%
rename from briar-core/src/test/java/org/briarproject/briar/BriarTestUtils.java
rename to briar-core/src/test/java/org/briarproject/briar/test/BriarTestUtils.java
index 5aa297b13056cb442c404fac481d317bb3892fce..d29fc0b54167dba4eb80b43c77575fd994925114 100644
--- a/briar-core/src/test/java/org/briarproject/briar/BriarTestUtils.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarTestUtils.java
@@ -1,4 +1,4 @@
-package org.briarproject.briar;
+package org.briarproject.briar.test;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.sync.GroupId;