diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
index c486248367798657b0c6ee2fbb381d9450cd78e4..eea39bb2c55c86b23c5a84b61d504b9e9e38de4c 100644
--- a/dune/istl/test/CMakeLists.txt
+++ b/dune/istl/test/CMakeLists.txt
@@ -78,7 +78,8 @@ function(add_factory_test BLOCK)
   STRING(REGEX REPLACE "[^a-zA-Z0-9]" "" BLOCK_CLEAN ${BLOCK})
   set(DEFINE_DEACTIVATE_AMG_DIRECTSOLVER "#define DISABLE_AMG_DIRECTSOLVER 1")
   configure_file(solverfactorytest.cc.in solverfactorytest_${BLOCK_CLEAN}.cc)
-  dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc)
+  dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc
+                CMAKE_GUARD HAVE_MPI)
   string(REGEX MATCH "LoopSIMD" _matched "${BLOCK}")
   if(NOT _matched)
     set(DEFINE_DEACTIVATE_AMG_DIRECTSOLVER "")
@@ -87,6 +88,7 @@ function(add_factory_test BLOCK)
                   MPI_RANKS 1 2 4
                   TIMEOUT 600
                   CMAKE_GUARD
+                  HAVE_MPI
                   SuiteSparse_CHOLMOD_FOUND
                   SuiteSparse_LDL_FOUND
                   SuiteSparse_SPQR_FOUND
diff --git a/dune/istl/test/matrixmarkettest.cc b/dune/istl/test/matrixmarkettest.cc
index b335afe610907ffd57dcc8aa63db623c10d5847b..ce30e8ae796e1d3634506266516d700d3e830336 100644
--- a/dune/istl/test/matrixmarkettest.cc
+++ b/dune/istl/test/matrixmarkettest.cc
@@ -52,7 +52,7 @@ int testMatrixMarket(int N)
   storeMatrixMarket(mat, std::string("testmat"), comm);
   storeMatrixMarket(bv, std::string("testvec"), comm, false);
 #else
-  typedef Dune::MatrixAdapter<BCRSMat,BVector,BVector> Operator;
+  typedef Dune::MatrixAdapter<Matrix,Vector,Vector> Operator;
   Operator op(mat);
   op.apply(bv, cv);
 
diff --git a/dune/istl/test/overlappingschwarztest.cc b/dune/istl/test/overlappingschwarztest.cc
index 66fd89558413373f5a4f5840be35b2af84357154..1fec3ed4df0c2b1d8bfc11a8797bc6a942169b95 100644
--- a/dune/istl/test/overlappingschwarztest.cc
+++ b/dune/istl/test/overlappingschwarztest.cc
@@ -257,7 +257,6 @@ Dune::TestSuite test(int argc, char** argv)
 
 int main(int argc, char** argv){
   Dune::TestSuite suite;
-  suite.require(HAVE_SUPERLU || HAVE_SUITESPARSE_UMFPACK) << "You need SuperLU or SuiteSparse's UMFPack to run this test.";
   suite.subTest(test<Dune::FieldMatrix<double, 1, 1>, Dune::FieldVector<double, 1>>(argc, argv));
   suite.subTest(test<double, double>(argc, argv));
   return suite.exit();
diff --git a/dune/istl/test/scalarproductstest.cc b/dune/istl/test/scalarproductstest.cc
index 452b1d8932e08bc97488891b569867aef693affe..f46ce2a97a7d5e0600302d1516da7adc154e9862 100644
--- a/dune/istl/test/scalarproductstest.cc
+++ b/dune/istl/test/scalarproductstest.cc
@@ -115,6 +115,7 @@ int main(int argc, char** argv)
     scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
   }
 
+#if HAVE_MPI
   // Test the ParallelScalarProduct class
   {
     using Vector = BlockVector<FieldVector<double,BlockSize> >;
@@ -139,6 +140,7 @@ int main(int argc, char** argv)
     ScalarProduct scalarProduct(communicator,SolverCategory::nonoverlapping);
     scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
   }
+#endif
 
   return t.exit();
 }