diff --git a/test/async/context.cpp b/test/async/context.cpp
index 83cfde4..4092de5 100644
--- a/test/async/context.cpp
+++ b/test/async/context.cpp
@@ -2,19 +2,51 @@
 
 #include <gtest/gtest.h>
 
-TEST(Context, RunSimple)
+struct Context : public testing::Test
 {
-    sdbusplus::async::context ctx;
-    ctx.run(std::execution::just() |
-            std::execution::then([&ctx]() { ctx.request_stop(); }));
+    ~Context() noexcept = default;
+
+    void TearDown() override
+    {
+        // Destructing the context can throw, so we have to do it in
+        // the TearDown in order to make our destructor noexcept.
+        ctx.reset();
+    }
+
+    std::optional<sdbusplus::async::context> ctx{std::in_place};
+};
+
+TEST_F(Context, RunSimple)
+{
+    ctx->run(std::execution::just() |
+             std::execution::then([this]() { ctx->request_stop(); }));
 }
 
-TEST(Context, SpawnedTask)
+TEST_F(Context, SpawnedTask)
 {
-    sdbusplus::async::context ctx;
+    ctx->spawn(std::execution::just());
 
-    ctx.spawn(std::execution::just());
+    ctx->run(std::execution::just() |
+             std::execution::then([this]() { ctx->request_stop(); }));
+}
 
-    ctx.run(std::execution::just() |
-            std::execution::then([&ctx]() { ctx.request_stop(); }));
+TEST_F(Context, SpawnDelayedTask)
+{
+    using namespace std::literals;
+    static constexpr auto timeout = 500ms;
+
+    auto start = std::chrono::steady_clock::now();
+
+    bool ran = false;
+    ctx->spawn(sdbusplus::async::sleep_for(*ctx, timeout) |
+               std::execution::then([&ran]() { ran = true; }));
+
+    ctx->run(std::execution::just() |
+             std::execution::then([this]() { ctx->request_stop(); }));
+
+    auto stop = std::chrono::steady_clock::now();
+
+    EXPECT_TRUE(ran);
+    EXPECT_GT(stop - start, timeout);
+    EXPECT_LT(stop - start, timeout * 2);
 }
