diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
index d81b280029e26408aed69b0cc4f09dfad7034029..4d67861a2ad2fe93c312807c757d2fa2ddac8b75 100644
--- a/dune/istl/test/CMakeLists.txt
+++ b/dune/istl/test/CMakeLists.txt
@@ -67,7 +67,15 @@ if(SuiteSparse_UMFPACK_FOUND)
   set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "umfpack_decomp")
 endif()
 
-if (SUPERLU_FOUND OR SuiteSparse_UMFPACK_FOUND)
+dune_add_test(
+  SOURCES ldltest.cc
+  SKIP_ON_77)
+
+dune_add_test(
+  SOURCES spqrtest.cc
+  SKIP_ON_77)
+
+if ((SUPERLU_FOUND) OR (SuiteSparse_UMFPACK_FOUND))
   dune_add_test(SOURCES overlappingschwarztest.cc)
 endif()
 
diff --git a/dune/istl/test/ldltest.cc b/dune/istl/test/ldltest.cc
index b2147a6156f051b594bd7b8804e88c62b7b51467..af0784f37aaf66b73987a7ed7488441cdc0fa356 100644
--- a/dune/istl/test/ldltest.cc
+++ b/dune/istl/test/ldltest.cc
@@ -14,6 +14,7 @@
 
 int main(int argc, char** argv)
 {
+#if HAVE_LDL
   try
   {
     typedef double FIELD_TYPE;
@@ -80,4 +81,8 @@ int main(int argc, char** argv)
   {
     std::cerr << "Unknown exception" << std::endl;
   }
+#else // #if HAVE_LDL
+  std::cerr << "You need SuiteSparse's LDL to run this test." << std::endl;
+  return 77;
+#endif // #if HAVE_LDL
 }
diff --git a/dune/istl/test/spqrtest.cc b/dune/istl/test/spqrtest.cc
index 0c9e2ae8adb0d7dd613b356dca6bd5f73fa640f4..43d0202415a8630d0499c946ce47e304ef47a0d5 100644
--- a/dune/istl/test/spqrtest.cc
+++ b/dune/istl/test/spqrtest.cc
@@ -15,6 +15,7 @@
 
 int main(int argc, char** argv)
 {
+#if HAVE_SPQR
   try
   {
     typedef double FIELD_TYPE;
@@ -81,4 +82,8 @@ int main(int argc, char** argv)
   {
     std::cerr << "Unknown exception" << std::endl;
   }
+#else // #if HAVE_SPQR
+  std::cerr << "You need SuiteSparse's LDL to run this test." << std::endl;
+  return 77;
+#endif // #if HAVE_SPQR
 }