diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7ae77a93a04bd0777c2900953ae15e259cb02b26..6a2d30bc039744d318c70cfa7a7c3216c924237c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,6 +18,10 @@ include(DuneMacros)
 # start a dune project with information from dune.module
 dune_project()
 
+# Optional packages that are only needed for tests:
+find_package(SuiteSparse OPTIONAL_COMPONENTS UMFPACK)
+include(AddSuiteSparseFlags)
+
 add_subdirectory("m4")
 add_subdirectory("dune")
 add_subdirectory("doc")
diff --git a/dune/solvers/test/CMakeLists.txt b/dune/solvers/test/CMakeLists.txt
index adbd5b36de171785b54af5aca87dce75f2170bfd..29576869772af7cf8d2a4b87c306c9a3aa134f9e 100644
--- a/dune/solvers/test/CMakeLists.txt
+++ b/dune/solvers/test/CMakeLists.txt
@@ -21,7 +21,8 @@ endif()
 set(TESTS ${OTHER_TESTS} ${GRID_BASED_TESTS})
 
 if(SuiteSparse_UMFPACK_FOUND)
-  list(APPEND TESTS umfpacksolvertest)
+  dune_add_test(SOURCES umfpacksolvertest.cc)
+  add_dune_suitesparse_flags(umfpacksolvertest)
 endif()
 
 foreach(_test ${TESTS})