diff --git a/src/test/test_bitcoin.h b/src/test/test_bitcoin.h
--- a/src/test/test_bitcoin.h
+++ b/src/test/test_bitcoin.h
@@ -157,9 +157,12 @@
     }
 };
 
-// define an implicit conversion here so that uint256 may be used directly in
-// BOOST_CHECK_*
+enum class ScriptError;
+
+// define implicit conversions here so that these types may be used in
+// BOOST_*_EQUAL
 std::ostream &operator<<(std::ostream &os, const uint256 &num);
+std::ostream &operator<<(std::ostream &os, const ScriptError &err);
 
 CBlock getBlock13b8a();
 
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
--- a/src/test/test_bitcoin.cpp
+++ b/src/test/test_bitcoin.cpp
@@ -22,6 +22,7 @@
 #include <random.h>
 #include <rpc/register.h>
 #include <rpc/server.h>
+#include <script/script_error.h>
 #include <script/scriptcache.h>
 #include <script/sigcache.h>
 #include <streams.h>
@@ -41,6 +42,11 @@
     return os;
 }
 
+std::ostream &operator<<(std::ostream &os, const ScriptError &err) {
+    os << ScriptErrorString(err);
+    return os;
+}
+
 BasicTestingSetup::BasicTestingSetup(const std::string &chainName)
     : m_path_root(fs::temp_directory_path() / "test_bitcoin" /
                   strprintf("%lu_%i", static_cast<unsigned long>(GetTime()),