diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index b2463211d87d9c634b74586a174d158c26c685ed..749de241774e1c2600a42565e1b9a893f1363485 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.10)
 
 # Link runCSMCameraModelTests with what we want to test and the GTest and pthread library
-add_executable(runCSMCameraModelTests TestyMcTestFace.cpp)
+add_executable(runCSMCameraModelTests TestyMcTestFace.cpp FrameCameraTests.cpp)
 target_link_libraries(runCSMCameraModelTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
 
 gtest_discover_tests(runCSMCameraModelTests WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
diff --git a/tests/FrameCameraTests.cpp b/tests/FrameCameraTests.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..22e63ca9bf1db107684b9ee9c065e5c42883a8bb
--- /dev/null
+++ b/tests/FrameCameraTests.cpp
@@ -0,0 +1,77 @@
+#include "UsgsAstroFramePlugin.h"
+#include "UsgsAstroFrameSensorModel.h"
+
+#include <json.hpp>
+
+#include <sstream>
+#include <fstream>
+
+#include <gtest/gtest.h>
+
+using json = nlohmann::json;
+
+class FrameSensorModel : public ::testing::Test {
+   protected:
+
+      UsgsAstroFrameSensorModel *sensorModel;
+
+      void SetUp() override {
+         sensorModel = NULL;
+         std::ifstream isdFile("data/simpleFramerISD.json");
+         json jsonIsd = json::parse(isdFile);
+         csm::Isd isd;
+         for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) {
+            json jsonValue = it.value();
+            if (jsonValue.size() > 1) {
+               for (int i = 0; i < jsonValue.size(); i++) {
+                  isd.addParam(it.key(), jsonValue[i].dump());
+               }
+            }
+            else {
+               isd.addParam(it.key(), jsonValue.dump());
+            }
+         }
+         isdFile.close();
+
+         UsgsAstroFramePlugin frameCameraPlugin;
+         
+         csm::Model *model = frameCameraPlugin.constructModelFromISD(
+               isd,
+               "USGS_ASTRO_FRAME_SENSOR_MODEL");
+         
+         sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model);
+         
+         ASSERT_NE(sensorModel, nullptr);
+      }
+
+      void TearDown() override {
+         if (sensorModel) {
+            delete sensorModel;
+            sensorModel = NULL;
+         }
+      }
+};
+
+TEST_F(FrameSensorModel, Center) {
+   csm::ImageCoord imagePt(7.0, 7.0);
+   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
+   EXPECT_NEAR(groundPt.x, 10.0, 1e-8);
+   EXPECT_NEAR(groundPt.y, 0, 1e-8);
+   EXPECT_NEAR(groundPt.z, 0, 1e-8);
+}
+
+TEST_F(FrameSensorModel, OffBody) {
+   csm::ImageCoord imagePt(14.5, -0.5);
+   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
+   EXPECT_NEAR(groundPt.x, 0.44979759, 1e-8);
+   EXPECT_NEAR(groundPt.y, -14.99325304, 1e-8);
+   EXPECT_NEAR(groundPt.z, 14.99325304, 1e-8);
+}
+
+TEST_F(FrameSensorModel, SlightlyOffCenter) {
+   csm::ImageCoord imagePt(7.0, 6.0);
+   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
+   EXPECT_NEAR(groundPt.x, 9.80194018, 1e-8);
+   EXPECT_NEAR(groundPt.y, 0, 1e-8);
+   EXPECT_NEAR(groundPt.z, 1.98039612, 1e-8);
+}
\ No newline at end of file
diff --git a/tests/TestMain.cpp b/tests/TestMain.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b297051461d82f3172ca97d3d48d0003f0296918
--- /dev/null
+++ b/tests/TestMain.cpp
@@ -0,0 +1,6 @@
+#include "gtest/gtest.h"
+int main(int argc, char **argv)
+{
+   testing::InitGoogleTest(&argc, argv);
+   return RUN_ALL_TESTS();
+}
\ No newline at end of file
diff --git a/tests/data/simpleFramerISD.json b/tests/data/simpleFramerISD.json
index f05e5df1ce7ba253d979f4ede0ed596659825c21..e44f64797b293025dff5828e7bcc11f578d323c0 100644
--- a/tests/data/simpleFramerISD.json
+++ b/tests/data/simpleFramerISD.json
@@ -12,7 +12,7 @@
     "focal_length": 50,
     "focal_length_epsilon": 1.0,
     "ifov": 6.0,
-    "model_name": "UsgsAstroFramePluginCSM",
+    "model_name": "USGS_ASTRO_FRAME_SENSOR_MODEL",
     "spacecraft_name": "TEST_CRAFT",
     "instrument_id": "TEST_SENSOR",
     "target_name": "TEST_BALL",
@@ -46,8 +46,8 @@
     "omega": 0,
     "phi": -1.5707963267948966,
     "kappa": 3.141592653589793,
-    "semi_major_axis": 10,
-    "semi_minor_axis": 10,
+    "semi_major_axis":0.01,
+    "semi_minor_axis":0.01,
     "transx": [
         0.0,
         0.1,