diff --git a/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
index 4c35f9afbfea82b8cf6405e07a43eef74aa9f5e9..6ed64db13192d9082a4edac6d8a569dfbb6e2bb6 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularScanTest.cpp
@@ -7,6 +7,8 @@
 #include "Device/Instrument/Instrument.h"
 #include "Device/Resolution/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
+#include "Sample/Material/MaterialFactoryFuncs.h"
+#include "Sample/Slice/Slice.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class SpecularScanTest : public ::testing::Test {};
@@ -123,6 +125,7 @@ TEST_F(SpecularScanTest, QScanInit) {
         EXPECT_EQ(scan.numberOfSimulationElements(), axis.size());
         EXPECT_EQ(scan.footprintFactor(), nullptr);
         EXPECT_EQ(scan.footprint(0, 1), std::vector<double>{1.0});
+        EXPECT_EQ(scan.offset(), 0.);
         EXPECT_THROW(scan.footprint(1, axis.size()), std::runtime_error);
         EXPECT_NO_THROW(scan.footprint(0, axis.size()));
     };
@@ -166,11 +169,13 @@ TEST_F(SpecularScanTest, AngularScanClone) {
 
 TEST_F(SpecularScanTest, QScanClone) {
     QSpecScan scan(std::vector<double>{0.1, 0.2, 0.3});
+    scan.setOffset(2.22);
 
     std::unique_ptr<QSpecScan> scan_clone(scan.clone());
     EXPECT_EQ(*scan_clone->coordinateAxis(), *scan.coordinateAxis());
     EXPECT_NE(scan_clone->coordinateAxis(), scan.coordinateAxis());
     EXPECT_EQ(scan_clone->footprintFactor(), nullptr);
+    EXPECT_EQ(scan_clone->offset(), scan.offset());
 }
 
 TEST_F(SpecularScanTest, GenerateSimElements) {
@@ -183,13 +188,26 @@ TEST_F(SpecularScanTest, GenerateSimElements) {
     for (size_t i = 0; i < sim_elements.size(); ++i)
         EXPECT_TRUE(sim_elements[i].isCalculated());
 
-    QSpecScan scan2(std::vector<double>{0.0, 0.2, 0.3});
+    const auto scan2_qvector = std::vector<double>{0.0, 0.2, 0.3};
+    QSpecScan scan2(scan2_qvector);
     std::vector<SpecularSimulationElement> sim_elements2 =
         scan.generateSimulationElements(instrument);
     EXPECT_EQ(sim_elements2.size(), scan2.numberOfSimulationElements());
     EXPECT_EQ(scan2.numberOfSimulationElements(), 3u);
     for (size_t i = 0; i < sim_elements2.size(); ++i)
         EXPECT_TRUE(sim_elements2[i].isCalculated());
+    
+    const double offset = 1.;
+    scan2.setOffset(offset);
+    std::vector<SpecularSimulationElement> sim_elements3 =
+        scan2.generateSimulationElements(instrument);
+    std::vector<Slice> slices;
+    slices.emplace_back(0., MaterialBySLD());
+    for (size_t i = 0; i < sim_elements3.size(); ++i){
+        const auto generatedKzs = sim_elements3[i].produceKz(slices);
+        EXPECT_EQ(generatedKzs[0].imag(), 0.);
+        EXPECT_EQ(2. * generatedKzs[0].real(), scan2_qvector[i] + offset);
+    }
 }
 
 TEST_F(SpecularScanTest, ErrorInput) {