diff --git a/dune/solvers/test/cgsteptest.cc b/dune/solvers/test/cgsteptest.cc
index 07c54bb2d49ac21d43a6c7529de09997448423e4..d96088403e25cb55f2917b859fdf6db4040f4e1f 100644
--- a/dune/solvers/test/cgsteptest.cc
+++ b/dune/solvers/test/cgsteptest.cc
@@ -9,6 +9,7 @@
 
 #include <dune/solvers/norms/energynorm.hh>
 #include <dune/solvers/solvers/loopsolver.hh>
+#include <dune/solvers/iterationsteps/blockgsstep.hh>
 #include <dune/solvers/iterationsteps/cgstep.hh>
 #include <dune/solvers/solvers/cgsolver.hh>
 
@@ -111,6 +112,25 @@ struct CGTestSuite
 
             passed = passed and analyser.analyse(u_copy, testCase);
         }
+        {
+            std::string const testCase = "CGSolver, preconditioned             ";
+
+            Vector u_copy = u;
+            Vector rhs_copy = rhs;
+
+            using BGS = BlockGSStep<Matrix,Vector,BitVector>;
+            BGS blockgs(BGS::Direction::SYMMETRIC);
+            blockgs.ignoreNodes_ = new BitVector(u.size(), false);
+
+            CGSolver<Matrix,Vector> solver(&A, &u_copy, &rhs_copy, &blockgs,
+                                           maxIterations, stepTol, &energyNorm,
+                                           verbosity, relativeErrors);
+            solver.check();
+            solver.preprocess();
+            solver.solve();
+
+            passed = passed and analyser.analyse(u_copy, testCase);
+        }
         {
             std::string const testCase = "Dune::Solvers::CGStep                ";
 
@@ -126,6 +146,25 @@ struct CGTestSuite
 
             passed = passed and analyser.analyse(u_copy, testCase);
         }
+        {
+            std::string const testCase = "Dune::Solvers::CGStep, preconditioned";
+
+            Vector u_copy = u;
+            Vector rhs_copy = rhs;
+
+            using BGS = BlockGSStep<Matrix,Vector,BitVector>;
+            BGS blockgs(BGS::Direction::SYMMETRIC);
+            blockgs.ignoreNodes_ = new BitVector(u.size(), false);
+
+            Dune::Solvers::CGStep<Matrix,Vector> cgStep(A, u_copy, rhs_copy, blockgs);
+            ::LoopSolver<Vector> solver(&cgStep, maxIterations, stepTol, &energyNorm,
+                                        verbosity, relativeErrors);
+            solver.check();
+            solver.preprocess();
+            solver.solve();
+
+            passed = passed and analyser.analyse(u_copy, testCase);
+        }
         return passed;
     }
 };