diff --git a/Core/Simulation/SpecularSimulation.cpp b/Core/Simulation/SpecularSimulation.cpp
index 03120ead958c379c7001bbaa6f793b8a9067b17d..6750e588e4e517d1dea9ac0b0d5dcd538874fa22 100644
--- a/Core/Simulation/SpecularSimulation.cpp
+++ b/Core/Simulation/SpecularSimulation.cpp
@@ -71,9 +71,18 @@ size_t SpecularSimulation::numberOfSimulationElements() const
 void SpecularSimulation::setBeamParameters(double lambda, const IAxis& alpha_axis,
                                            const IFootprintFactor* beam_shape)
 {
+    if (lambda <= 0.0)
+        throw std::runtime_error(
+            "Error in SpecularSimulation::setBeamParameters: wavelength must be positive.");
     if (alpha_axis.getMin() < 0.0)
         throw std::runtime_error(
             "Error in SpecularSimulation::setBeamParameters: minimum value on angle axis is negative.");
+    if (alpha_axis.getMin() >= alpha_axis.getMax())
+        throw std::runtime_error("Error in SpecularSimulation::setBeamParameters: maximal value on "
+                                 "angle axis is less or equal to the minimal one.");
+    if (alpha_axis.size() == 0)
+        throw std::runtime_error(
+            "Error in SpecularSimulation::setBeamParameters: angle axis is empty");
 
     SpecularDetector1D detector(alpha_axis);
     m_instrument.setDetector(detector);
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.h b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.h
index 5a0418aa28ce8beddc0f269fc57f79d4ac4bd58f..12a042d3f339cf314a101fd53443e7e8f68fbb02 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.h
+++ b/Tests/UnitTests/Core/Fresnel/SpecularSimulationTest.h
@@ -64,17 +64,44 @@ TEST_F(SpecularSimulationTest, SetBeamParameters)
 
     VariableBinAxis axis("axis", 2, std::vector<double>{1.0, 2.0, 3.0});
     sim.setBeamParameters(1.0, axis);
+    const auto& beam = sim.getInstrument().getBeam();
+
     EXPECT_EQ(2u, sim.getAlphaAxis()->size());
     EXPECT_EQ(1.0, sim.getAlphaAxis()->getMin());
     EXPECT_EQ(3.0, sim.getAlphaAxis()->getMax());
+    EXPECT_EQ(1.0, beam.getIntensity());
+    EXPECT_EQ(1.0, beam.getWavelength());
+    EXPECT_EQ(0.0, beam.getAlpha());
+    EXPECT_EQ(0.0, beam.getPhi());
+
+    sim.setBeamIntensity(2.0);
+    EXPECT_EQ(2.0, beam.getIntensity());
 
     sim.setBeamParameters(1.0, 10, 1.0 * Units::degree, 10.0 * Units::degree);
     EXPECT_EQ(10u, sim.getAlphaAxis()->size());
     EXPECT_EQ(1.0 * Units::degree, sim.getAlphaAxis()->getMin());
     EXPECT_EQ(10.0 * Units::degree, sim.getAlphaAxis()->getMax());
+    EXPECT_EQ(2.0, beam.getIntensity());
+    EXPECT_EQ(1.0, beam.getWavelength());
+    EXPECT_EQ(0.0, beam.getAlpha());
+    EXPECT_EQ(0.0, beam.getPhi());
 
     EXPECT_THROW(sim.setBeamParameters(1.0, 10, -2.0, 3.0),
                  std::runtime_error);
+    EXPECT_THROW(sim.setBeamParameters(1.0, 10, 2.0, 1.0),
+                 std::runtime_error);
+    EXPECT_THROW(sim.setBeamParameters(1.0, 0, 1.0, 2.0),
+                 std::runtime_error);
+    EXPECT_THROW(sim.setBeamParameters(-1.0, 1, 1.0, 2.0),
+                 std::runtime_error);
+
+    EXPECT_EQ(10u, sim.getAlphaAxis()->size());
+    EXPECT_EQ(1.0 * Units::degree, sim.getAlphaAxis()->getMin());
+    EXPECT_EQ(10.0 * Units::degree, sim.getAlphaAxis()->getMax());
+    EXPECT_EQ(2.0, beam.getIntensity());
+    EXPECT_EQ(1.0, beam.getWavelength());
+    EXPECT_EQ(0.0, beam.getAlpha());
+    EXPECT_EQ(0.0, beam.getPhi());
 }
 
 TEST_F(SpecularSimulationTest, ConstructSimulation)