diff --git a/src/armnnTfLiteParser/test/ResizeBilinear.cpp b/src/armnnTfLiteParser/test/ResizeBilinear.cpp
new file mode 100644
index 0000000..400dc78
--- /dev/null
+++ b/src/armnnTfLiteParser/test/ResizeBilinear.cpp
@@ -0,0 +1,118 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <boost/test/unit_test.hpp>
+#include "ParserFlatbuffersFixture.hpp"
+#include "../TfLiteParser.hpp"
+
+#include <string>
+#include <iostream>
+
+using armnnTfLiteParser::TfLiteParser;
+
+BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
+
+struct ResizeBilinearFixture : public ParserFlatbuffersFixture
+{
+    explicit ResizeBilinearFixture(const std::string & inputShape,
+                                   const std::string & outputShape,
+                                   const std::string & sizeShape,
+                                   const std::string & sizeData)
+    {
+        m_JsonString = R"(
+            {
+                "version": 3,
+                "operator_codes": [ { "builtin_code": "RESIZE_BILINEAR" } ],
+                "subgraphs": [ {
+                    "tensors": [
+                        {
+                            "shape": )" + sizeShape + R"( ,
+                            "type": "INT32",
+                            "buffer": 0,
+                            "name": "sizeTensor",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + inputShape + R"(,
+                            "type": "FLOAT32",
+                            "buffer": 1,
+                            "name": "InputTensor",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + outputShape + R"( ,
+                            "type": "FLOAT32",
+                            "buffer": 2,
+                            "name": "OutputTensor",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        }
+                    ],
+                "inputs": [ 1 ],
+                "outputs": [ 2 ],
+                "operators": [
+                    {
+                        "opcode_index": 0,
+                        "inputs": [ 1, 0 ],
+                        "outputs": [ 2 ],
+                        "builtin_options_type": "ResizeBilinearOptions",
+                        "builtin_options": {
+                        },
+                        "custom_options_format": "FLEXBUFFERS"
+                    }
+                ],
+              } ],
+              "buffers" : [
+                  { "data": )" + sizeData + R"(, },
+                  { },
+                  { },
+              ]
+            }
+      )";
+      Setup();
+    }
+};
+
+
+struct SimpleResizeBilinearFixture : ResizeBilinearFixture
+{
+    SimpleResizeBilinearFixture()
+        : ResizeBilinearFixture("[ 1, 3, 3, 1 ]",         // inputShape
+                                "[ 1, 5, 5, 1 ]",         // outputShape
+                                "[ 2 ]",                  // sizeShape
+                                "[  5,0,0,0, 5,0,0,0 ]")  // sizeData
+    {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseResizeBilinear, SimpleResizeBilinearFixture)
+{
+    RunTest<4, armnn::DataType::Float32>(
+                0,
+                {{"InputTensor", { 0.0f, 1.0f, 2.0f,
+                                   3.0f, 4.0f, 5.0f,
+                                   6.0f, 7.0f, 8.0f }}},
+                {{"OutputTensor", { 0.0f, 0.6f, 1.2f, 1.8f, 2.0f,
+                                    1.8f, 2.4f, 3.0f, 3.6f, 3.8f,
+                                    3.6f, 4.2f, 4.8f, 5.4f, 5.6f,
+                                    5.4f, 6.0f, 6.6f, 7.2f, 7.4f,
+                                    6.0f, 6.6f, 7.2f, 7.8f, 8.0f }}}
+                );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
