diff --git a/nix/zug.nix b/nix/zug.nix
index c8386ee..64ebbc9 100644
--- a/nix/zug.nix
+++ b/nix/zug.nix
@@ -5,7 +5,7 @@
   cmake,
   ninja,
   boost,
-  catch2,
+  catch2_3,
   sources ? ../.,
   withTests ? false,
   withExamples ? false,
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index bea9d9a..3a5c691 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -31,7 +31,6 @@ foreach(_file IN LISTS zug_unit_tests)
   add_executable(${_target} EXCLUDE_FROM_ALL "${_file}")
   set_target_properties(${_target} PROPERTIES OUTPUT_NAME ${_output})
   add_dependencies(tests ${_target})
-  target_compile_definitions(${_target} PUBLIC CATCH_CONFIG_MAIN)
-  target_link_libraries(${_target} PUBLIC zug-dev Catch2::Catch2)
+  target_link_libraries(${_target} PUBLIC zug-dev Catch2::Catch2WithMain)
   add_test("test/${_output}" ${_output})
 endforeach()
diff --git a/test/__inline_var_tests/CMakeLists.txt b/test/__inline_var_tests/CMakeLists.txt
index e36c5bb..b258596 100644
--- a/test/__inline_var_tests/CMakeLists.txt
+++ b/test/__inline_var_tests/CMakeLists.txt
@@ -7,5 +7,5 @@ message("adding unit test: inline_var_tests")
 file(GLOB_RECURSE inline_var_test_files "*.cpp")
 add_executable(inline_var_tests EXCLUDE_FROM_ALL ${inline_var_test_files})
 add_dependencies(tests inline_var_tests)
-target_link_libraries(inline_var_tests PUBLIC zug-dev)
+target_link_libraries(inline_var_tests PUBLIC zug-dev Catch2::Catch2WithMain)
 add_test("test/inline_var_tests" inline_var_tests)
diff --git a/test/__inline_var_tests/inline_var.cpp b/test/__inline_var_tests/inline_var.cpp
index bb7acee..4c47370 100644
--- a/test/__inline_var_tests/inline_var.cpp
+++ b/test/__inline_var_tests/inline_var.cpp
@@ -11,7 +11,7 @@
 
 #include <zug/detail/inline_constexpr.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug::detail;
 
diff --git a/test/__inline_var_tests/main.cpp b/test/__inline_var_tests/main.cpp
index 4ed06df..96821ce 100644
--- a/test/__inline_var_tests/main.cpp
+++ b/test/__inline_var_tests/main.cpp
@@ -1,2 +1 @@
-#define CATCH_CONFIG_MAIN
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
diff --git a/test/compose.cpp b/test/compose.cpp
index 3c2a743..192aa35 100644
--- a/test/compose.cpp
+++ b/test/compose.cpp
@@ -8,7 +8,7 @@
 
 #include <zug/compose.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <array>
 #include <functional>
diff --git a/test/into.cpp b/test/into.cpp
index 88788bf..913c131 100644
--- a/test/into.cpp
+++ b/test/into.cpp
@@ -11,7 +11,7 @@
 #include <zug/transducer/filter.hpp>
 #include <zug/transducer/map.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/into_vector.cpp b/test/into_vector.cpp
index fcefa7b..9a90ee5 100644
--- a/test/into_vector.cpp
+++ b/test/into_vector.cpp
@@ -12,7 +12,7 @@
 #include <zug/transducer/map.hpp>
 #include <zug/transducer/transducer.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/meta.cpp b/test/meta.cpp
index 20a3cfd..326e7fd 100644
--- a/test/meta.cpp
+++ b/test/meta.cpp
@@ -9,7 +9,7 @@
 #include <zug/meta.hpp>
 #include <zug/util.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/reduce.cpp b/test/reduce.cpp
index d1d6c93..4614899 100644
--- a/test/reduce.cpp
+++ b/test/reduce.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/reduce.hpp>
 #include <zug/reducing/first.hpp>
diff --git a/test/reductor.cpp b/test/reductor.cpp
index 95704d8..44c1dc5 100644
--- a/test/reductor.cpp
+++ b/test/reductor.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/reducing/first.hpp>
 #include <zug/reducing/last.hpp>
diff --git a/test/run.cpp b/test/run.cpp
index ac12da8..c8addeb 100644
--- a/test/run.cpp
+++ b/test/run.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/run.hpp>
diff --git a/test/sequence.cpp b/test/sequence.cpp
index 2b23e86..2bee4ea 100644
--- a/test/sequence.cpp
+++ b/test/sequence.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/sequence.hpp>
diff --git a/test/state_traits.cpp b/test/state_traits.cpp
index 773c99f..8f7e331 100644
--- a/test/state_traits.cpp
+++ b/test/state_traits.cpp
@@ -16,7 +16,7 @@
 #include <zug/transducer/transducer.hpp>
 #include <zug/util.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/transduce.cpp b/test/transduce.cpp
index d90e4d3..47dcdbe 100644
--- a/test/transduce.cpp
+++ b/test/transduce.cpp
@@ -11,7 +11,7 @@
 #include <zug/transducer/take.hpp>
 #include <zug/util.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <vector>
 
diff --git a/test/transducer/cat.cpp b/test/transducer/cat.cpp
index 0fc59a3..d9c450b 100644
--- a/test/transducer/cat.cpp
+++ b/test/transducer/cat.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/cat.hpp>
diff --git a/test/transducer/chain.cpp b/test/transducer/chain.cpp
index 2f7360a..a0e27b1 100644
--- a/test/transducer/chain.cpp
+++ b/test/transducer/chain.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/chain.hpp>
diff --git a/test/transducer/count.cpp b/test/transducer/count.cpp
index 4ae4ebd..4b93ad7 100644
--- a/test/transducer/count.cpp
+++ b/test/transducer/count.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/cycle.cpp b/test/transducer/cycle.cpp
index 5833c01..14fa2c4 100644
--- a/test/transducer/cycle.cpp
+++ b/test/transducer/cycle.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/dedupe.cpp b/test/transducer/dedupe.cpp
index 43b4ea2..87eb99c 100644
--- a/test/transducer/dedupe.cpp
+++ b/test/transducer/dedupe.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/distinct.cpp b/test/transducer/distinct.cpp
index 42543ff..a021766 100644
--- a/test/transducer/distinct.cpp
+++ b/test/transducer/distinct.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/drop.cpp b/test/transducer/drop.cpp
index 700780b..4799393 100644
--- a/test/transducer/drop.cpp
+++ b/test/transducer/drop.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/drop_while.cpp b/test/transducer/drop_while.cpp
index 50f9f4b..d6ab021 100644
--- a/test/transducer/drop_while.cpp
+++ b/test/transducer/drop_while.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/each.cpp b/test/transducer/each.cpp
index 6fa6b10..1117e2f 100644
--- a/test/transducer/each.cpp
+++ b/test/transducer/each.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/each.hpp>
diff --git a/test/transducer/eager.cpp b/test/transducer/eager.cpp
index 87651ff..5a900da 100644
--- a/test/transducer/eager.cpp
+++ b/test/transducer/eager.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/enumerate.cpp b/test/transducer/enumerate.cpp
index c925c0a..91d02a1 100644
--- a/test/transducer/enumerate.cpp
+++ b/test/transducer/enumerate.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/enumerate.hpp>
diff --git a/test/transducer/filter.cpp b/test/transducer/filter.cpp
index 9fd1baa..d197584 100644
--- a/test/transducer/filter.cpp
+++ b/test/transducer/filter.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/interelave.cpp b/test/transducer/interelave.cpp
index b7dc7be..4278ca8 100644
--- a/test/transducer/interelave.cpp
+++ b/test/transducer/interelave.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/interleave.cpp b/test/transducer/interleave.cpp
index 55f43d9..f0e4357 100644
--- a/test/transducer/interleave.cpp
+++ b/test/transducer/interleave.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/interleave.hpp>
diff --git a/test/transducer/interpose.cpp b/test/transducer/interpose.cpp
index ad80577..573d7f1 100644
--- a/test/transducer/interpose.cpp
+++ b/test/transducer/interpose.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/iter.cpp b/test/transducer/iter.cpp
index b4317f7..f76afb4 100644
--- a/test/transducer/iter.cpp
+++ b/test/transducer/iter.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/iter.hpp>
diff --git a/test/transducer/map.cpp b/test/transducer/map.cpp
index bec37f5..f33fb04 100644
--- a/test/transducer/map.cpp
+++ b/test/transducer/map.cpp
@@ -12,7 +12,7 @@
 #include <zug/transducer/map.hpp>
 #include <zug/transducer/take.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/transducer/map_indexed.cpp b/test/transducer/map_indexed.cpp
index 2e4fa49..b5cc400 100644
--- a/test/transducer/map_indexed.cpp
+++ b/test/transducer/map_indexed.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/transduce.hpp>
 #include <zug/transducer/map_indexed.hpp>
diff --git a/test/transducer/mapcat.cpp b/test/transducer/mapcat.cpp
index 10e3139..272ed11 100644
--- a/test/transducer/mapcat.cpp
+++ b/test/transducer/mapcat.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/mapcat.hpp>
diff --git a/test/transducer/partition.cpp b/test/transducer/partition.cpp
index d87a83f..80883ed 100644
--- a/test/transducer/partition.cpp
+++ b/test/transducer/partition.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/partition_by.cpp b/test/transducer/partition_by.cpp
index 4577fa7..e0c73ab 100644
--- a/test/transducer/partition_by.cpp
+++ b/test/transducer/partition_by.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/product.cpp b/test/transducer/product.cpp
index 0105dfc..f04ec70 100644
--- a/test/transducer/product.cpp
+++ b/test/transducer/product.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/random_sample.cpp b/test/transducer/random_sample.cpp
index 971b0f9..147b5db 100644
--- a/test/transducer/random_sample.cpp
+++ b/test/transducer/random_sample.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <cstdint>
 #include <limits>
diff --git a/test/transducer/range.cpp b/test/transducer/range.cpp
index 76fdd69..42e901a 100644
--- a/test/transducer/range.cpp
+++ b/test/transducer/range.cpp
@@ -6,7 +6,8 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/matchers/catch_matchers_floating_point.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/reducing/last.hpp>
diff --git a/test/transducer/read.cpp b/test/transducer/read.cpp
index 108e3e9..73d5a7d 100644
--- a/test/transducer/read.cpp
+++ b/test/transducer/read.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/read.hpp>
diff --git a/test/transducer/readbuf.cpp b/test/transducer/readbuf.cpp
index 219f170..fb3a4ff 100644
--- a/test/transducer/readbuf.cpp
+++ b/test/transducer/readbuf.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/remove.cpp b/test/transducer/remove.cpp
index 8d6cb3d..b5fda99 100644
--- a/test/transducer/remove.cpp
+++ b/test/transducer/remove.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/transduce.hpp>
diff --git a/test/transducer/repeat.cpp b/test/transducer/repeat.cpp
index 89d4695..6f0b191 100644
--- a/test/transducer/repeat.cpp
+++ b/test/transducer/repeat.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/replace.cpp b/test/transducer/replace.cpp
index 0e9db49..23b84cc 100644
--- a/test/transducer/replace.cpp
+++ b/test/transducer/replace.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transduce.hpp>
diff --git a/test/transducer/scan.cpp b/test/transducer/scan.cpp
index 0fedf14..5f10dac 100644
--- a/test/transducer/scan.cpp
+++ b/test/transducer/scan.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/transducer/count.hpp>
diff --git a/test/transducer/sink.cpp b/test/transducer/sink.cpp
index 1683fff..d44eb68 100644
--- a/test/transducer/sink.cpp
+++ b/test/transducer/sink.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/take.cpp b/test/transducer/take.cpp
index e752946..5cfdf5b 100644
--- a/test/transducer/take.cpp
+++ b/test/transducer/take.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into.hpp>
diff --git a/test/transducer/take_nth.cpp b/test/transducer/take_nth.cpp
index 90b0b1c..7ae6020 100644
--- a/test/transducer/take_nth.cpp
+++ b/test/transducer/take_nth.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/take_while.cpp b/test/transducer/take_while.cpp
index 65b210c..d03cfbe 100644
--- a/test/transducer/take_while.cpp
+++ b/test/transducer/take_while.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/into_vector.hpp>
diff --git a/test/transducer/transducer.cpp b/test/transducer/transducer.cpp
index 33bcfca..4b75e74 100644
--- a/test/transducer/transducer.cpp
+++ b/test/transducer/transducer.cpp
@@ -4,7 +4,7 @@
 #include <zug/transducer/map.hpp>
 #include <zug/transducer/transducer.hpp>
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 using namespace zug;
 
diff --git a/test/transducer/unzip.cpp b/test/transducer/unzip.cpp
index 271b0b4..5929339 100644
--- a/test/transducer/unzip.cpp
+++ b/test/transducer/unzip.cpp
@@ -6,7 +6,8 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/matchers/catch_matchers_floating_point.hpp>
 
 #include <zug/into_vector.hpp>
 #include <zug/reducing/last.hpp>
diff --git a/test/transducer/write.cpp b/test/transducer/write.cpp
index d464706..d1f0ac8 100644
--- a/test/transducer/write.cpp
+++ b/test/transducer/write.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/reducing/first.hpp>
 #include <zug/run.hpp>
diff --git a/test/transducer/writebuf.cpp b/test/transducer/writebuf.cpp
index ec9ac20..65d3b64 100644
--- a/test/transducer/writebuf.cpp
+++ b/test/transducer/writebuf.cpp
@@ -6,7 +6,7 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
 
 #include <zug/compose.hpp>
 #include <zug/run.hpp>
diff --git a/test/transducer/zip.cpp b/test/transducer/zip.cpp
index b644fe3..4613c3e 100644
--- a/test/transducer/zip.cpp
+++ b/test/transducer/zip.cpp
@@ -6,7 +6,8 @@
 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 //
 
-#include <catch2/catch.hpp>
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/matchers/catch_matchers_floating_point.hpp>
 
 #include <zug/transduce.hpp>
 #include <zug/transducer/zip.hpp>

