diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestModule.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestModule.kt
index a94240522433410182262f34a31f187f95efb7dd..38d46db1e289328a5f3f4fe3b4394327f2d043e0 100644
--- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestModule.kt
+++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/TestModule.kt
@@ -21,7 +21,7 @@ import javax.inject.Singleton
     ]
 )
 @InstallIn(SingletonComponent::class)
-internal class TestModule {
+internal class TestModule(private val tempDir: File) {
     @Singleton
     @Provides
     fun provideClock() = Clock { System.currentTimeMillis() }
@@ -30,7 +30,7 @@ internal class TestModule {
     @Provides
     fun provideDatabaseConfig() = object : DatabaseConfig {
         override fun getDatabaseDirectory(): File {
-            return File("/tmp")
+            return tempDir
         }
     }
 }
diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/WebServerIntegrationTest.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/WebServerIntegrationTest.kt
index f6d922246405b4bb3f4daa4d4e73c4eb235746c3..753642437efe430a862737084eff97296ec2cf33 100644
--- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/WebServerIntegrationTest.kt
+++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/WebServerIntegrationTest.kt
@@ -7,26 +7,31 @@ import io.ktor.client.statement.HttpResponse
 import io.ktor.client.statement.readText
 import kotlinx.coroutines.runBlocking
 import org.briarproject.mailbox.core.DaggerTestComponent
+import org.briarproject.mailbox.core.TestComponent
+import org.briarproject.mailbox.core.TestModule
 import org.briarproject.mailbox.core.server.WebServerManager.Companion.PORT
 import org.junit.jupiter.api.AfterAll
 import org.junit.jupiter.api.BeforeAll
 import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.TestInstance
 import org.junit.jupiter.api.TestInstance.Lifecycle
+import org.junit.jupiter.api.io.TempDir
+import java.io.File
 import kotlin.test.assertEquals
 
 @TestInstance(Lifecycle.PER_CLASS)
 class WebServerIntegrationTest {
 
-    private val testComponent = DaggerTestComponent.builder().build()
-    private val lifecycleManager = testComponent.getLifecycleManager()
+    private lateinit var testComponent: TestComponent
+    private val lifecycleManager by lazy { testComponent.getLifecycleManager() }
     private val httpClient = HttpClient(CIO) {
         expectSuccess = false // prevents exceptions on non-success responses
     }
     private val baseUrl = "http://127.0.0.1:$PORT"
 
     @BeforeAll
-    fun setUp() {
+    fun setUp(@TempDir tempDir: File) {
+        testComponent = DaggerTestComponent.builder().testModule(TestModule(tempDir)).build()
         testComponent.injectCoreEagerSingletons()
         lifecycleManager.startServices()
         lifecycleManager.waitForStartup()