diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75f0e7d..a6e7050 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -129,25 +129,17 @@
 include(CTest)
 if(BUILD_TESTING)
     enable_testing()
-    find_path(TROMPELOEIL_PATH trompeloeil.hpp PATH_SUFFIXES trompeloeil/)
-    if("${TROMPELOEIL_PATH}" STREQUAL "TROMPELOEIL_PATH-NOTFOUND")
-        message(FATAL_ERROR "Cannot find the \"trompeloeil.hpp\" file provided by <https://github.com/rollbear/trompeloeil>. "
-            "Please set TROMPELOEIL_PATH to where it is available.")
-    endif()
-
-    find_path(CATCH_PATH catch.hpp PATH_SUFFIXES catch/)
-    if("${CATCH_PATH}" STREQUAL "CATCH_PATH-NOTFOUND")
-        message(FATAL_ERROR "Cannot find the \"catch.hpp\" file provided by <http://catch-lib.net/>. "
-            "Please set CATCH_PATH to where it is available.")
-    endif()
+    find_package(trompeloeil 33 REQUIRED)
+    find_package(Catch2 2.7.0 REQUIRED)
 
     add_library(TestCatchIntegration STATIC
         tests/catch_integration.cpp
         tests/trompeloeil_catch.h
+        tests/wait-a-bit-longer.cpp
         )
-    target_include_directories(TestCatchIntegration SYSTEM PUBLIC ${TROMPELOEIL_PATH} ${CATCH_PATH})
     target_include_directories(TestCatchIntegration PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/tests/ ${CMAKE_CURRENT_SOURCE_DIR}/src/)
-    target_link_libraries(TestCatchIntegration spdlog::spdlog)
+    target_link_libraries(TestCatchIntegration Catch2::Catch2 trompeloeil spdlog::spdlog)
+    target_compile_definitions(TestCatchIntegration PUBLIC CATCH_CONFIG_FAST_COMPILE)
 
     if (NOT SYSREPOCTL_EXECUTABLE)
         find_program(SYSREPOCTL_EXECUTABLE sysrepoctl)
diff --git a/submodules/dependencies b/submodules/dependencies
index 6eb582a..1ca9427 160000
--- a/submodules/dependencies
+++ b/submodules/dependencies
@@ -1 +1 @@
-Subproject commit 6eb582a01f055d7d7f78f3cd87cca9336420338b
+Subproject commit 1ca9427e987725a154c8dfcfe6f3af849cf19762
diff --git a/tests/catch_integration.cpp b/tests/catch_integration.cpp
index b3143fb..e1b18db 100644
--- a/tests/catch_integration.cpp
+++ b/tests/catch_integration.cpp
@@ -1,2 +1,29 @@
 #define CATCH_CONFIG_MAIN
-#include <catch.hpp>
+#include <catch2/catch.hpp>
+#include <sstream>
+#include <trompeloeil.hpp>
+
+namespace trompeloeil
+  {
+    template <>
+    void reporter<specialized>::send(
+      severity s,
+      const char* file,
+      unsigned long line,
+      const char* msg)
+    {
+      std::ostringstream os;
+      if (line) os << file << ':' << line << '\n';
+      os << msg;
+      auto failure = os.str();
+      if (s == severity::fatal)
+      {
+        FAIL(failure);
+      }
+      else
+      {
+        CAPTURE(failure);
+        CHECK(failure.empty());
+      }
+    }
+  }
diff --git a/tests/cd.cpp b/tests/cd.cpp
index 71eb6bb..44d87dd 100644
--- a/tests/cd.cpp
+++ b/tests/cd.cpp
@@ -291,6 +291,6 @@
                 input = "cd example:twoKeyList[number=4][name=abcd]";
             }
         }
-        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException&);
+        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException);
     }
 }
diff --git a/tests/leaf_editing.cpp b/tests/leaf_editing.cpp
index 274d171..f18af1c 100644
--- a/tests/leaf_editing.cpp
+++ b/tests/leaf_editing.cpp
@@ -183,6 +183,6 @@
                 input = "set leafBinary db=ahj";
         }
 
-        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException&);
+        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException);
     }
 }
diff --git a/tests/ls.cpp b/tests/ls.cpp
index a19add2..3e8fd52 100644
--- a/tests/ls.cpp
+++ b/tests/ls.cpp
@@ -202,6 +202,6 @@
                 input = "lssecond:a";
         }
 
-        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException&);
+        REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException);
     }
 }
diff --git a/tests/presence_containers.cpp b/tests/presence_containers.cpp
index 6872d1b..91b3e95 100644
--- a/tests/presence_containers.cpp
+++ b/tests/presence_containers.cpp
@@ -106,7 +106,7 @@
             input = "list[quote='lol']";
         }
 
-        REQUIRE_THROWS_AS(parser.parseCommand("create " + input, errorStream), InvalidCommandException&);
-        REQUIRE_THROWS_AS(parser.parseCommand("delete " + input, errorStream), InvalidCommandException&);
+        REQUIRE_THROWS_AS(parser.parseCommand("create " + input, errorStream), InvalidCommandException);
+        REQUIRE_THROWS_AS(parser.parseCommand("delete " + input, errorStream), InvalidCommandException);
     }
 }
diff --git a/tests/trompeloeil_catch.h b/tests/trompeloeil_catch.h
index c6d1131..3de799b 100644
--- a/tests/trompeloeil_catch.h
+++ b/tests/trompeloeil_catch.h
@@ -1,67 +1,8 @@
 #pragma once
 
-#ifdef REQUIRE
-# error This file needs to be included prior to including anything from Catch.
-#endif
-
-// clang-format off
-
-#include <ostream>
-#include <thread>
-#include <catch.hpp>
+#include <catch2/catch.hpp>
 #include <trompeloeil.hpp>
 
-// this is copy-paste from https://github.com/rollbear/trompeloeil/blob/master/docs/CookBook.md/#unit_test_frameworks
-namespace trompeloeil {
+extern template struct trompeloeil::reporter<trompeloeil::specialized>;
 
-/** @short Pass reports from the Trompeloeil mocker to Catch for processing as test failures */
-template <>
-struct reporter<trompeloeil::specialized>
-{
-  static void send(trompeloeil::severity s,
-                   const char* file,
-                   unsigned long line,
-                   const char* msg)
-  {
-    std::ostringstream os;
-    if (line) os << file << ':' << line << '\n';
-    os << msg;
-    auto failure = os.str();
-    if (s == severity::fatal)
-    {
-      FAIL(failure);
-    }
-    else
-    {
-      CAPTURE(failure);
-      CHECK(failure.empty());
-    }
-  }
-};
-}
-
-/** @short Wait until a given sequence of expectation is matched, and then a bit more to ensure that there's silence afterwards */
-void waitForCompletionAndBitMore(const trompeloeil::sequence& seq)
-{
-    using namespace std::literals;
-    using clock = std::chrono::steady_clock;
-
-    // We're busy-waiting a bit
-    const auto waitingStep = 30ms;
-    // Timeout after this much
-    const auto completionTimeout = 5000ms;
-    // When checking for silence afterwards, wait at least this long.
-    // We'll also wait as long as it originally took to process everything.
-    const auto minExtraWait = 100ms;
-
-    auto start = clock::now();
-    while (!seq.is_completed()) {
-        std::this_thread::sleep_for(waitingStep);
-        if (clock::now() - start > completionTimeout) {
-            break;
-        }
-    }
-    REQUIRE(seq.is_completed());
-    auto duration = std::chrono::duration<double>(clock::now() - start);
-    std::this_thread::sleep_for(std::max(duration, decltype(duration)(minExtraWait)));
-}
+void waitForCompletionAndBitMore(const trompeloeil::sequence& seq);
diff --git a/tests/wait-a-bit-longer.cpp b/tests/wait-a-bit-longer.cpp
new file mode 100644
index 0000000..029e36f
--- /dev/null
+++ b/tests/wait-a-bit-longer.cpp
@@ -0,0 +1,30 @@
+#include <catch2/catch.hpp>
+#include <chrono>
+#include <thread>
+#include <trompeloeil.hpp>
+
+/** @short Wait until a given sequence of expectation is matched, and then a bit more to ensure that there's silence afterwards */
+void waitForCompletionAndBitMore(const trompeloeil::sequence& seq)
+{
+    using namespace std::literals;
+    using clock = std::chrono::steady_clock;
+
+    // We're busy-waiting a bit
+    const auto waitingStep = 30ms;
+    // Timeout after this much
+    const auto completionTimeout = 5000ms;
+    // When checking for silence afterwards, wait at least this long.
+    // We'll also wait as long as it originally took to process everything.
+    const auto minExtraWait = 100ms;
+
+    auto start = clock::now();
+    while (!seq.is_completed()) {
+        std::this_thread::sleep_for(waitingStep);
+        if (clock::now() - start > completionTimeout) {
+            break;
+        }
+    }
+    REQUIRE(seq.is_completed());
+    auto duration = std::chrono::duration<double>(clock::now() - start);
+    std::this_thread::sleep_for(std::max(duration, decltype(duration)(minExtraWait)));
+}
