diff --git a/dune/xt/grid/test/eoc_gridprovider.py b/dune/xt/grid/test/eoc_gridprovider.py
new file mode 100644
index 0000000000000000000000000000000000000000..a80f334658a4b6c4d2a9b1179579beefa0a61ef1
--- /dev/null
+++ b/dune/xt/grid/test/eoc_gridprovider.py
@@ -0,0 +1,5 @@
+import dune.xt.grid.types as grid_types
+from dune.xt.codegen import typeid_to_typedef_name as safe_name
+
+# alberta needs manual flag adding in cmake, so we skip it here
+all_grids = ((safe_name(g), g) for g in grid_types.all_types(cache, list(range(1, 4))) if 'Alberta' not in g)
diff --git a/dune/xt/grid/test/eoc_gridprovider.tpl b/dune/xt/grid/test/eoc_gridprovider.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..bd36fb30df29e5d2bf5ad53ab02237d40e71fef3
--- /dev/null
+++ b/dune/xt/grid/test/eoc_gridprovider.tpl
@@ -0,0 +1,25 @@
+// This file is part of the dune-xt-grid project:
+//   https://github.com/dune-community/dune-xt-grid
+// Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved.
+// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
+//      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
+//          with "runtime exception" (http://www.dune-project.org/license.html)
+// Authors:
+//   Rene Milk       (2018)
+
+#include <dune/xt/common/test/main.hxx>
+
+#include <dune/xt/grid/gridprovider/eoc.hh>
+#include <dune/xt/grid/grids.hh>
+
+
+{% for name, type in config.all_grids %}
+
+GTEST_TEST(EocProvider_{{name}}, layers)
+{
+  using Level = Dune::XT::Grid::LevelBasedEOCGridProvider<{{type}}>;
+  using DD = Dune::XT::Grid::DdSubdomainsBasedEOCGridProvider<{{type}}>;
+  using Leaf = Dune::XT::Grid::LeafBasedEOCGridProvider<{{type}}>;
+}
+
+{% endfor %}