diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp
index 6d6753ea2..a19788ab9 100644
--- a/src/slic3r/Utils/UndoRedo.cpp
+++ b/src/slic3r/Utils/UndoRedo.cpp
@@ -1102,43 +1102,3 @@ bool Stack::temp_snapshot_active() const { return pimpl->temp_snapshot_active();
 
 } // namespace UndoRedo
 } // namespace Slic3r
-
-
-//FIXME we should have unit tests for testing serialization of basic types as DynamicPrintConfig.
-#if 0
-#include "libslic3r/Config.hpp"
-#include "libslic3r/PrintConfig.hpp"
-namespace Slic3r {
-	bool test_dynamic_print_config_serialization() {
-		FullPrintConfig full_print_config;
-		DynamicPrintConfig cfg;
-		cfg.apply(full_print_config, false);
-
-		std::string serialized;
-	   	try {
-			std::ostringstream ss;
-			cereal::BinaryOutputArchive oarchive(ss);
-	        oarchive(cfg);
-			serialized = ss.str();
-	    } catch (std::runtime_error e) {
-	        e.what();
-	    }
-
-	    DynamicPrintConfig cfg2;
-	   	try {
-			std::stringstream ss(serialized);
-			cereal::BinaryInputArchive iarchive(ss);
-	        iarchive(cfg2);
-	    } catch (std::runtime_error e) {
-	        e.what();
-	    }
-
-	    if (cfg == cfg2) {
-	    	printf("Yes!\n");
-			return true;
-	    }
-	    printf("No!\n");
-		return false;
-	}
-} // namespace Slic3r
-#endif
diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp
index 97729ac8e..213105084 100644
--- a/tests/libslic3r/test_config.cpp
+++ b/tests/libslic3r/test_config.cpp
@@ -3,6 +3,11 @@
 #include "libslic3r/PrintConfig.hpp"
 #include "libslic3r/LocalesUtils.hpp"
 
+#include <cereal/types/polymorphic.hpp>
+#include <cereal/types/string.hpp> 
+#include <cereal/types/vector.hpp> 
+#include <cereal/archives/binary.hpp>
+
 using namespace Slic3r;
 
 SCENARIO("Generic config validation performs as expected.", "[Config]") {
@@ -202,3 +207,33 @@ SCENARIO("Config ini load/save interface", "[Config]") {
         }
     }
 }
+
+SCENARIO("DynamicPrintConfig serialization", "[Config]") {
+    WHEN("DynamicPrintConfig is serialized and deserialized") {
+        FullPrintConfig full_print_config;
+        DynamicPrintConfig cfg;
+        cfg.apply(full_print_config, false);
+
+        std::string serialized;
+        try {
+            std::ostringstream ss;
+            cereal::BinaryOutputArchive oarchive(ss);
+            oarchive(cfg);
+            serialized = ss.str();
+        } catch (std::runtime_error e) {
+            e.what();
+        }
+
+        THEN("Config object contains ini file options.") {
+            DynamicPrintConfig cfg2;
+            try {
+                std::stringstream ss(serialized);
+                cereal::BinaryInputArchive iarchive(ss);
+                iarchive(cfg2);
+            } catch (std::runtime_error e) {
+                e.what();
+            }
+            REQUIRE(cfg == cfg2);
+        }
+    }
+}