diff --git a/source/application/api/common/include/Model.hpp b/source/application/api/common/include/Model.hpp
index 1728e1f..6eefd02 100644
--- a/source/application/api/common/include/Model.hpp
+++ b/source/application/api/common/include/Model.hpp
@@ -33,7 +33,7 @@
         Model();
 
         /** @brief Destructor. */
-        ~Model();
+        virtual ~Model() = default;
 
         /** @brief  Gets the pointer to the model's input tensor at given input index. */
         TfLiteTensor* GetInputTensor(size_t index) const;
diff --git a/source/application/api/common/source/Model.cc b/source/application/api/common/source/Model.cc
index b344a53..3675c5b 100644
--- a/source/application/api/common/source/Model.cc
+++ b/source/application/api/common/source/Model.cc
@@ -20,8 +20,6 @@
 #include <cinttypes>
 #include <memory>
 
-arm::app::Model::~Model() = default;
-
 arm::app::Model::Model() : m_inited(false), m_type(kTfLiteNoType) {}
 
 /* Initialise the model */
diff --git a/tests/common/ClassifierTests.cc b/tests/common/ClassifierTests.cc
index 0abaa15..7df4242 100644
--- a/tests/common/ClassifierTests.cc
+++ b/tests/common/ClassifierTests.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021, 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -47,10 +47,15 @@
 {
     SECTION("Test invalid classifier")
     {
+        /* Note: Errors or warnings generated by this test will appear in output of any subsequent
+         * failing tests causing misleading output. Give warning until solution is found */
+        printf("Invalid classifier common test output:\n");
         TfLiteTensor* outputTens = nullptr;
         std::vector <arm::app::ClassificationResult> resultVec;
         arm::app::Classifier classifier;
         REQUIRE(!classifier.GetClassificationResults(outputTens, resultVec, {}, 5, true));
+        printf("End of invalid classifier common test output. \nERROR messages above this line are "
+               "expected and can be ignored.\n\n");
     }
 
     SECTION("Test classification results")
diff --git a/tests/common/ProfilerTests.cc b/tests/common/ProfilerTests.cc
index 62c7347..0b487e5 100644
--- a/tests/common/ProfilerTests.cc
+++ b/tests/common/ProfilerTests.cc
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2021, 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,10 +41,17 @@
         profilerValid.GetAllResultsAndReset(results);
         REQUIRE(results.size() == 1);
         REQUIRE(results[0].name == "test_valid");
-        /* Abuse should still fail: */
+
+        /* Improper usage should cause failure.
+         * Note: Errors or warnings generated by this test will appear in output of any subsequent
+         * failing tests causing misleading output. Give warning until solution is found */
+        printf("Invalid profiler usage common test output:\n");
         REQUIRE(false == profilerValid.StopProfiling()); /* We need to start it first */
+
         REQUIRE(true == profilerValid.StartProfiling()); /* Should be able to start it fine */
         REQUIRE(false == profilerValid.StartProfiling()); /* Can't restart it without resetting */
+        printf("End of Invalid profiler usage common test output. \nERROR messages above this line "
+               "are expected and can be ignored.\n\n");
         profilerValid.Reset();
         REQUIRE(true == profilerValid.StartProfiling()); /* Can start it again now.. */
         REQUIRE(true == profilerValid.StopProfiling());
diff --git a/tests/use_case/inference_runner/InferenceRunnerTests.cc b/tests/use_case/inference_runner/InferenceRunnerTests.cc
new file mode 100644
index 0000000..400bd9c
--- /dev/null
+++ b/tests/use_case/inference_runner/InferenceRunnerTests.cc
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates
+ * <open-source-office@arm.com> SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define CATCH_CONFIG_MAIN
+#include <catch.hpp>
diff --git a/tests/use_case/inference_runner/InferenceTestInferenceRunner.cc b/tests/use_case/inference_runner/InferenceTestInferenceRunner.cc
new file mode 100644
index 0000000..7988ae1
--- /dev/null
+++ b/tests/use_case/inference_runner/InferenceTestInferenceRunner.cc
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates
+ * <open-source-office@arm.com> SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "BufAttributes.hpp"
+#include "TensorFlowLiteMicro.hpp"
+#include "TestModel.hpp" /* Model class for running inference. */
+
+#include <catch.hpp>
+#include <random>
+
+namespace arm {
+namespace app {
+    static uint8_t tensorArena[ACTIVATION_BUF_SZ] ACTIVATION_BUF_ATTRIBUTE;
+    namespace inference_runner {
+        extern uint8_t* GetModelPointer();
+        extern size_t GetModelLen();
+    } /* namespace inference_runner */
+} /* namespace app */
+} /* namespace arm */
+
+TEST_CASE("Testing Init failure due to insufficient tensor arena inf runner", "[inf runner]")
+{
+    /* Note: Errors or warnings generated by this test will appear in output of any subsequent
+     * failing tests causing misleading output. Give warning until solution is found */
+    printf("Insufficient tensor arena test output:\n");
+    arm::app::TestModel model{};
+    REQUIRE_FALSE(model.IsInited());
+    size_t insufficientTensorArenaSz = 1000;
+    REQUIRE_FALSE(model.Init(arm::app::tensorArena,
+                             insufficientTensorArenaSz,
+                             arm::app::inference_runner::GetModelPointer(),
+                             arm::app::inference_runner::GetModelLen()));
+
+    printf("End of insufficient tensor arena test output. \nERROR messages above this line are "
+           "expected and can be ignored.\n\n");
+    REQUIRE_FALSE(model.IsInited());
+}
