diff --git a/src/metric_value.hpp b/src/metric_value.hpp
index d01ac4e..6c1d3da 100644
--- a/src/metric_value.hpp
+++ b/src/metric_value.hpp
@@ -9,4 +9,10 @@
     std::string metadata;
     double value;
     uint64_t timestamp;
+
+    MetricValue(std::string_view idIn, std::string_view metadataIn,
+                double valueIn, uint64_t timestampIn) :
+        id(idIn),
+        metadata(metadataIn), value(valueIn), timestamp(timestampIn)
+    {}
 };
diff --git a/src/types/error_message.hpp b/src/types/error_message.hpp
index de27772..c40d1f8 100644
--- a/src/types/error_message.hpp
+++ b/src/types/error_message.hpp
@@ -8,4 +8,8 @@
 {
     ErrorType error;
     std::string arg0;
+
+    ErrorMessage(ErrorType errorIn, std::string_view arg0In) :
+        error(errorIn), arg0(arg0In)
+    {}
 };
diff --git a/src/utils/ensure.hpp b/src/utils/ensure.hpp
index 8f266ab..8c4fc99 100644
--- a/src/utils/ensure.hpp
+++ b/src/utils/ensure.hpp
@@ -18,11 +18,7 @@
     Ensure(F functor) : functor(std::move(functor))
     {}
 
-    Ensure(Ensure&& other) : functor(std::move(other.functor))
-    {
-        other.functor = std::nullopt;
-    }
-
+    Ensure(Ensure&& other) = delete;
     Ensure(const Ensure&) = delete;
 
     ~Ensure()
@@ -38,12 +34,7 @@
         return *this;
     }
 
-    Ensure& operator=(Ensure&& other)
-    {
-        clear();
-        std::swap(functor, other.functor);
-        return *this;
-    }
+    Ensure& operator=(Ensure&& other) = delete;
 
     Ensure& operator=(std::nullptr_t)
     {
diff --git a/tests/src/test_ensure.cpp b/tests/src/test_ensure.cpp
index d252bc3..0e300ad 100644
--- a/tests/src/test_ensure.cpp
+++ b/tests/src/test_ensure.cpp
@@ -8,44 +8,22 @@
 class TestEnsure : public Test
 {
   public:
-    utils::Ensure<std::function<void()>> makeEnsure()
-    {
-        return [this] { ++executed; };
-    }
-
     utils::Ensure<std::function<void()>> sut;
+
     size_t executed = 0u;
 };
 
 TEST_F(TestEnsure, executesCallbackOnceWhenDestroyed)
 {
-    sut = makeEnsure();
+    sut = [this] { ++executed; };
     sut = nullptr;
 
     EXPECT_THAT(executed, Eq(1u));
 }
 
-TEST_F(TestEnsure, executesCallbackOnceWhenMoved)
-{
-    sut = makeEnsure();
-    auto copy = std::move(sut);
-    copy = nullptr;
-
-    EXPECT_THAT(executed, Eq(1u));
-}
-
-TEST_F(TestEnsure, executesCallbackTwiceWhenReplaced)
-{
-    sut = makeEnsure();
-    sut = makeEnsure();
-    sut = nullptr;
-
-    EXPECT_THAT(executed, Eq(2u));
-}
-
 TEST_F(TestEnsure, executesCallbackTwiceWhenNewCallbackAssigned)
 {
-    sut = makeEnsure();
+    sut = [this] { ++executed; };
     sut = [this] { executed += 10; };
     sut = nullptr;
 
diff --git a/tests/src/test_report.cpp b/tests/src/test_report.cpp
index 579c714..d05620b 100644
--- a/tests/src/test_report.cpp
+++ b/tests/src/test_report.cpp
@@ -85,7 +85,8 @@
 
         std::vector<MetricValue> readings{{MetricValue{"a", "b", 17.1, 114},
                                            MetricValue{"aa", "bb", 42.0, 74}}};
-        readings.resize(metricParameters.size());
+
+        ASSERT_THAT(readings.size(), Ge(metricParameters.size()));
 
         for (size_t i = 0; i < metricParameters.size(); ++i)
         {
