diff --git a/unitTests/unitTestClasses/TestSimulator.m b/unitTests/unitTestClasses/TestSimulator.m
new file mode 100644
index 0000000000000000000000000000000000000000..e2f9a1baa000ff994375c86dfd0b8a28b2db0e0b
--- /dev/null
+++ b/unitTests/unitTestClasses/TestSimulator.m
@@ -0,0 +1,98 @@
+classdef TestSimulator < UnitTest
+
+    properties
+        simulator     struct    % [-] 
+    end
+
+    properties (TestParameter)
+        verifiable = {'multipleAB', 'descent6DOF', 'ballistic', 'engineCut', 'solid','HRE1', 'HRE2', 'HRE3'}
+    end
+
+    methods
+        function createTest(testCase, verifiable)
+            
+            
+            currentPath = fileparts(mfilename('fullpath'));
+            cd(currentPath);
+            
+            
+            
+            if strcmp(verifiable, 'solid')
+                testCase.mission = Mission(pyxis);      %marco help
+                testCase.rocket = Rocket(mission);
+                testCase.environment = Environment(mission);
+            else
+                if strcmp(verifiable, 'HRE1')
+                    testCase.rocket.airbrakes.extension = 0;
+                    testCase.rocket.updateAll
+                else
+                    if strcmp(verifiable, 'HRE2')
+                        testCase.rocket.airbrakes.extension = 0.5;
+                        testCase.rocket.updateAll
+                    else
+                        if strcmp(verifiable, 'HRE3')
+                            testCase.rocket.airbrakes.extension = 1;
+                            testCase.rocket.updateAll
+                        else
+                            if strcmp(verifiable, 'engineCut')
+                                settings.timeEngineCut = (0.75) * settings.tb;                                                % [s] Moment in time in wich the engine will be cut off
+                                settings = settingsEngineCut(settings);                 %%HELP MAUCO
+                            end
+
+                        end
+                    end
+                end
+            end
+
+            [~, ~, testCase.simulator] = mainSimulator(testCase.rocket, testCase.wind, testCase.environment);
+
+                        
+            % Construct the file path dynamically based on the test parameter
+            filePath = sprintf("data\\testSimulator\\%s\\referenceState_%s.mat", verifiable, verifiable);
+                
+            % Load the reference file
+            ref = load(filePath);
+
+            fieldName = ['referenceState_' verifiable];
+            testCase.refSimulator = ref.(fieldName);
+        end
+
+
+        
+
+        function saveTest(testCase, verifiable)
+
+            
+            Time = tic;
+
+            
+            % simulator
+            [ascent, descent, ~] = mainSimulator(testCase.simulator);
+
+            stateA = ascent(end, :);    % state at end of ascent
+            stateF = descent(end, :);    % final state, at touchdown
+            stateF = [stateF zeros(1, 7)]; % to avoid problems in checkErrorSimulator
+
+            % saving final state
+            filePath = sprintf("data\\testSimulator\\%s\\referenceState_%s.mat", verifiable, verifiable);
+            save(filePath,'stateA','stateF');
+            Time = toc(Time);
+            fprintf('\t %s test created in: %2.2f seconds\n',verifiable, Time)
+        
+        end
+
+    end
+
+    methods (Test)
+        function mainSimulator(testCase)
+            addpath(genpath('../../simulator'))
+            [postp.ascent, postp.descent, ~] = mainSimulator(testCase.simulator);
+            testCase.postp = postp;
+            testCase.verifyEqual(testCase.postp, testCase.refSimulator, 'AbsTol', testCase.absToll, ...
+                'RelTol', testCase.relToll)
+        end
+
+    end
+
+
+end
\ No newline at end of file
diff --git a/unitTests/unitTestClasses/mainUnitTest.m b/unitTests/unitTestClasses/mainUnitTest.m
index 9b56058c5953df8c3bc55ec3ea517fe67a1c7333..17c972d79feeee3bc73321703fa28655fc56b993 100644
--- a/unitTests/unitTestClasses/mainUnitTest.m
+++ b/unitTests/unitTestClasses/mainUnitTest.m
@@ -40,4 +40,11 @@ if opt.testSensitivity
     sensResults = run(test);
 end
 
+if opt.testSimulator
+    test = TestSimulator();
+    test.creatTest;
+    sensResults = run(test);
+end
+
+
 toc(beginTest)
\ No newline at end of file
diff --git a/unitTests/unitTestClasses/saveTests.m b/unitTests/unitTestClasses/saveTests.m
index 5bc9651cb3e26b004aedad651104920721aef159..e109399194a76ccceccd8914787ea1682fb5199e 100644
--- a/unitTests/unitTestClasses/saveTests.m
+++ b/unitTests/unitTestClasses/saveTests.m
@@ -39,6 +39,11 @@ if opt.createTestOptimization
     test.saveTest();
 end
 
+if opt.createTestSimulator
+    test = TestSimulator();
+    test.saveTest
+end
+
 totTimeF = toc(totTime);
 fprintf('\n\n All unit tests created in: %2.2f seconds\n\n', totTimeF)