diff --git a/dune/solvers/CMakeLists.txt b/dune/solvers/CMakeLists.txt
index 83d271c619a55e73c3033b028ce94366b3ce97e3..40702b0301091692ead4c61160aa645898c7c273 100644
--- a/dune/solvers/CMakeLists.txt
+++ b/dune/solvers/CMakeLists.txt
@@ -3,6 +3,7 @@ add_subdirectory("iterationsteps")
 add_subdirectory("norms")
 add_subdirectory("operators")
 add_subdirectory("solvers")
+add_subdirectory("test")
 add_subdirectory("transferoperators")
 
 install(FILES
diff --git a/dune/solvers/test/CMakeLists.txt b/dune/solvers/test/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2f7bb73cb045761e58ff534e87689e95a88e4c92
--- /dev/null
+++ b/dune/solvers/test/CMakeLists.txt
@@ -0,0 +1,30 @@
+set(TESTS
+  cgsteptest
+  genericvectortoolstest
+  lowrankoperatortest
+  multigridtest
+  nulloperatortest
+  obstacletnnmgtest
+  sumoperatortest
+  )
+
+set(TESTS_IPOPT mmgtest quadraticipoptsolvertest)
+
+if(HAVE_IPOPT)
+  list(APPEND TESTS ${TESTS_IPOPT})
+endif()
+
+foreach(_test ${TESTS})
+  add_executable(${_test} EXCLUDE_FROM_ALL ${_test}.cc)
+  target_link_dune_default_libraries(${_test})
+  add_test(${_test} ${_test})
+endforeach()
+
+if(HAVE_IPOPT)
+  foreach(_test ${TESTS_IPOPT})
+    add_dune_ipopt_flags(${_test})
+  endforeach()
+endif()
+
+add_directory_test_target(_test_target)
+add_dependencies(${_test_target} ${TESTS})