diff --git a/tests/TellActorFromAnywhereTest.cpp b/tests/TellActorFromAnywhereTest.cpp
index 70800ac153e3fa9fce342659631138f7a75d805c..3e63f1f1a4b9c49d41d6bb11a5c00d093886bfcb 100644
--- a/tests/TellActorFromAnywhereTest.cpp
+++ b/tests/TellActorFromAnywhereTest.cpp
@@ -18,14 +18,16 @@ class SignallingActor : public Actor<unsigned int> {
 };
 
 void emperTest() {
-	BinaryPrivateSemaphore bps;
-	SignallingActor signallingActor(bps);
-	signallingActor.start();
+	// Heap allocate the Actor and the BPS until we have a way to
+	// cleanly terminate the Actor.
+	auto* bps = new BinaryPrivateSemaphore();
+	auto* signallingActor = new SignallingActor(*bps);
+	signallingActor->start();
 
 	// TODO: Use std::jthread once EMPER uses C++20.
-	std::thread signallingThread([&] { signallingActor.tellFromAnywhere(1); });
+	std::thread signallingThread([&] { signallingActor->tellFromAnywhere(1); });
 
-	bps.wait();
+	bps->wait();
 
 	// TODO: Remove this once we use std::jthread when EMPER uses C++20.
 	signallingThread.join();