diff --git a/test/ProblemStatTest.cpp b/test/ProblemStatTest.cpp
index b44b52f46ec443cece066c846c2bf38248c7c56a..c74a9cd69a7759992490c17125f49bb52b735bd2 100644
--- a/test/ProblemStatTest.cpp
+++ b/test/ProblemStatTest.cpp
@@ -54,11 +54,19 @@ int main(int argc, char** argv)
 {
   Environment env(argc, argv);
 
+#if !HAVE_PETSC || PETSC_USE_REAL_SINGLE
   test<float>();
+#endif
+
+#if !HAVE_PETSC || PETSC_USE_REAL_DOUBLE
   test<double>();
+#endif
+
+#if !HAVE_PETSC
   test<long double>();
+#endif
 
-#if HAVE_QUADMATH
+#if HAVE_QUADMATH && (!HAVE_PETSC || PETSC_USE_REAL___FLOAT128)
   test<Dune::Float128>();
 #endif