diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
new file mode 100644
index 00000000..b889c771
--- /dev/null
+++ b/.github/workflows/unit-tests.yml
@@ -0,0 +1,45 @@
+name: Unit Tests
+
+on:
+  pull_request:
+    paths:
+      - ".github/workflows/unit-tests.yml"
+      - 'extras/test/**'
+      - 'src/**'
+
+  push:
+    paths:
+      - ".github/workflows/unit-tests.yml"
+      - 'extras/test/**'
+      - 'src/**'
+
+jobs:
+  test:
+    name: Run unit tests
+    runs-on: ubuntu-latest
+
+    env:
+      COVERAGE_DATA_PATH: extras/coverage-data/coverage.info
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - uses: arduino/cpp-test-action@main
+        with:
+          runtime-paths: |
+            - extras/test/build/bin/TEST_TARGET_UUID
+            - extras/test/build/bin/TEST_TARGET_DISC_DEVICE
+            - extras/test/build/bin/TEST_TARGET_ADVERTISING_DATA
+          coverage-exclude-paths: |
+            - '*/extras/test/*'
+            - '/usr/*'
+          coverage-data-path: ${{ env.COVERAGE_DATA_PATH }}
+
+      - name: Upload coverage report to Codecov
+        uses: codecov/codecov-action@v1
+        with:
+          file: "${{ env.COVERAGE_DATA_PATH }}"
+          fail_ci_if_error: true
+
+          
diff --git a/extras/test/src/test_advertising_data/test_advertising_data.cpp b/extras/test/src/test_advertising_data/test_advertising_data.cpp
index 67fa1d25..5c4902d8 100644
--- a/extras/test/src/test_advertising_data/test_advertising_data.cpp
+++ b/extras/test/src/test_advertising_data/test_advertising_data.cpp
@@ -30,8 +30,8 @@ TEST_CASE("Test flags override", "[ArduinoBLE::BLEAdvertisingData]")
   // Mocking advertisement packet
   BLEAdvertisingData advData;
   // Expected results
-  uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06};
-  uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported};
+  const uint8_t defaultData[] = {0x02, BLEFieldFlags, 0x06};
+  const uint8_t goldenFlags[] = {0x02, 0x01, BLEFlagsBREDRNotSupported};
 
   WHEN("Default options for flags")
   {
@@ -74,9 +74,9 @@ TEST_CASE("Set default flags in an already full advertising data packet", "[Ardu
     const uint8_t manufacturerData[24] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
                                           17, 18, 19, 20, 21, 22, 23};
 
-    uint8_t defaultFlags[3] = {0x02, 0x01, 0x06}; 
+    const uint8_t defaultFlags[3] = {0x02, 0x01, 0x06}; 
 
-    uint8_t goldenData[31] = { 
+    const uint8_t goldenData[31] = { 
        (sizeof(manufacturerData) + 1), BLEFieldManufacturerData, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
                                                                 17, 18, 19, 20, 21, 22, 23,
         ((uint8_t)(strlen(name) + 1)), BLEFieldCompleteLocalName, 't', 'e', 's'
@@ -109,22 +109,36 @@ TEST_CASE("BLE overwrite a full internal advertising data with an external built
     BLE.setLocalName("test");
     BLE.setAdvertisedServiceUuid("1818");
     BLE.advertise();
-    //WARN("data length: " << BLE.getAdvertisingData().dataLength());
-    verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2)));
-    REQUIRE(verify);
-    verify = (BLE.getScanResponseData().dataLength() == (4+2));
-    REQUIRE(verify);
 
+    THEN("Check that BLE advertising data has been set") 
+    {
+      verify = (BLE.getAdvertisingData().dataLength() == (3 + (2+2)));
+      REQUIRE(verify);
+    }
+
+    THEN("Check that BLE scan response data has been set") 
+    {
+      verify = (BLE.getScanResponseData().dataLength() == (4+2));
+      REQUIRE(verify);
+    }
+
+    // Copy external empty adv data into advertising data
     BLE.setAdvertisingData(advData);
     BLE.advertise();
-    //WARN(BLE.getAdvertisingData().dataLength());
-    verify = (BLE.getAdvertisingData().dataLength() == 3);
-    REQUIRE(verify);
+    THEN("BLE advertising data should be erased") 
+    {
+      verify = (BLE.getAdvertisingData().dataLength() == 3);
+      REQUIRE(verify);
+    }
 
+    // Copy external empty adv data into scan response data
     BLE.setScanResponseData(advData);
     BLE.advertise();
-    verify = (BLE.getScanResponseData().dataLength() == 0);
-    REQUIRE(verify);
+    THEN("BLE scan response data should be erased") 
+    {
+      verify = (BLE.getScanResponseData().dataLength() == 0);
+      REQUIRE(verify);
+    }
   }
 
   // Clear BLE advertising data
@@ -139,21 +153,27 @@ TEST_CASE("BLE test raw data", "[ArduinoBLE::BLEAdvertisingData]")
 
   WHEN("Set too large raw data")
   {
-    uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+    const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                       11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                       21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
-    advData.setRawData(data, sizeof(data));
-    REQUIRE(!retVal);
+    retVal = advData.setRawData(data, sizeof(data));
+    THEN("Set raw data should return false. The parameter should not be set")
+    {
+      REQUIRE(!retVal);
+    }
     advData.clear();
   }
 
   WHEN("Set correct raw data")
   {
-    uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+    const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                       11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                       21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
     retVal = advData.setRawData(data, sizeof(data));
-    REQUIRE(retVal);
+    THEN("Set raw data should return true. The parameter should be correctly set")
+    {
+      REQUIRE(retVal);
+    }
     advData.updateData();
     REQUIRE( 0 == memcmp(data, advData.data(), sizeof(data)) );
     advData.clear();
@@ -161,7 +181,7 @@ TEST_CASE("BLE test raw data", "[ArduinoBLE::BLEAdvertisingData]")
 
   WHEN("Hide other parameters by setting raw data")
   {
-    uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+    const uint8_t data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     advData.setLocalName("test");
     advData.setRawData(data, sizeof(data));
 
diff --git a/extras/test/src/test_advertising_data/test_local_name.cpp b/extras/test/src/test_advertising_data/test_local_name.cpp
index 947224cc..a0b4e19d 100644
--- a/extras/test/src/test_advertising_data/test_local_name.cpp
+++ b/extras/test/src/test_advertising_data/test_local_name.cpp
@@ -35,8 +35,15 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]")
   {
     const char* name = "test";
     retVal = advData.setLocalName(name);
-    REQUIRE(retVal);
-    REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    THEN("Set local name should return true. The name parameter should be correctly set")
+    {
+      REQUIRE(retVal);
+    }
+
+    THEN("Check the exact number of bytes occupied by the name just set")
+    {
+      REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    }
     oldRemainingLength = advData.remainingLength();
 
     advData.updateData();
@@ -47,30 +54,36 @@ TEST_CASE("Test local name setting", "[ArduinoBLE::BLEAdvertisingData]")
   {
     const char* name = "way too long local name (len 32)";
     retVal = advData.setLocalName(name);
-    REQUIRE(!retVal);
-    REQUIRE( oldRemainingLength == advData.remainingLength() );
-    advData.updateData();
-    REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
+    THEN("Set local name should return false. The name parameter should not be set")
+    {
+      REQUIRE(!retVal);
+      REQUIRE( oldRemainingLength == advData.remainingLength() );
+      advData.updateData();
+      REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
+    }
   }
 
   WHEN("Overwrite local name with a name as long as max data length")
   {
     const char* name = "local name with full length  ";
     retVal = advData.setLocalName(name);
-    REQUIRE(retVal);
-    REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
-    oldRemainingLength = advData.remainingLength();
+    THEN("The name parameter should be correctly overwritten. The remaining length should be 0")
+    {
+      REQUIRE(retVal);
+      REQUIRE( (strlen(name) + 2) == (oldRemainingLength - advData.remainingLength()) );
+      oldRemainingLength = advData.remainingLength();
 
-    advData.updateData();
-    REQUIRE(advData.dataLength() == (strlen(name) + 2));
-    // advData should be full now
-    REQUIRE( 0 == advData.remainingLength() );
-    REQUIRE( 0 == advData.availableForWrite() );
+      advData.updateData();
+      REQUIRE(advData.dataLength() == (strlen(name) + 2));
+      // advData should be full now
+      REQUIRE( 0 == advData.remainingLength() );
+      REQUIRE( 0 == advData.availableForWrite() );
+    }
   }
 
   WHEN("Check consistency when setting the external advertising data")
   {
-    auto goldenData = advData.data();
+    const auto goldenData = advData.data();
     BLE.setAdvertisingData(advData);
     BLE.advertise();
     REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );
diff --git a/extras/test/src/test_advertising_data/test_manufacturer.cpp b/extras/test/src/test_advertising_data/test_manufacturer.cpp
index 39f7e955..7c23d26c 100644
--- a/extras/test/src/test_advertising_data/test_manufacturer.cpp
+++ b/extras/test/src/test_advertising_data/test_manufacturer.cpp
@@ -29,7 +29,7 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
 {
   BLEAdvertisingData advData;
   int oldRemainingLength = advData.remainingLength();
-  uint16_t companyId = 0x1100;
+  const uint16_t companyId = 0x1100;
   bool retVal;
 
   WHEN("Set correct manufacturer data without id")
@@ -38,8 +38,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t goldenData[] = {(sizeof(data) + 1), BLEFieldManufacturerData, 
                                   0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
     retVal = advData.setManufacturerData(data, sizeof(data));
-    REQUIRE(retVal);
-    REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    THEN("Check that the manufacturer data has been correctly set")
+    {
+      REQUIRE(retVal);
+      REQUIRE( (sizeof(data) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    }
     oldRemainingLength = advData.remainingLength();
 
     advData.updateData();
@@ -53,8 +56,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t goldenData[] = {(sizeof(data) + sizeof(companyId) + 1), BLEFieldManufacturerData, 
                                   0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
     retVal = advData.setManufacturerData(companyId, data, sizeof(data));
-    REQUIRE(retVal);
-    REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    THEN("Check that the manufacturer data has been correctly set")
+    {
+      REQUIRE(retVal);
+      REQUIRE( (sizeof(data) + sizeof(companyId) + 2) == (oldRemainingLength - advData.remainingLength()) );
+    }
     oldRemainingLength = advData.remainingLength();
 
     advData.updateData();
@@ -68,8 +74,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27};
     retVal = advData.setManufacturerData(companyId, data, sizeof(data));
-    REQUIRE(!retVal);
-    REQUIRE( oldRemainingLength == advData.remainingLength() );
+    THEN("Manufacturer data was too long, check that it has not been set")
+    {
+      REQUIRE(!retVal);
+      REQUIRE( oldRemainingLength == advData.remainingLength() );
+    }
     advData.updateData();
     REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
   }
@@ -80,8 +89,11 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
     retVal = advData.setManufacturerData(data, sizeof(data));
-    REQUIRE(!retVal);
-    REQUIRE( oldRemainingLength == advData.remainingLength() );
+    THEN("Manufacturer data was too long, check that it has not been set")
+    {
+      REQUIRE(!retVal);
+      REQUIRE( oldRemainingLength == advData.remainingLength() );
+    }
     advData.updateData();
     REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
   }
@@ -93,13 +105,19 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
                                   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28};
-    retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
-    REQUIRE(retVal);
-    retVal = advData.setManufacturerData(data, sizeof(data));
-    REQUIRE(retVal);
-    REQUIRE( 0 == advData.remainingLength() );
-    advData.updateData();
-    REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) );
+    THEN("Check that first insertion of manufacturer data given id is correctly done")
+    {
+      retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
+      REQUIRE(retVal);
+    }
+    THEN("Check that the insertion of manufacturer data without after one with id is correctly done")
+    {
+      retVal = advData.setManufacturerData(data, sizeof(data));
+      REQUIRE(retVal);
+      REQUIRE( 0 == advData.remainingLength() );
+      advData.updateData();
+      REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH) );
+    }
   }
 
   WHEN("Set manufacturer data given id after setting manufacturer data without id")
@@ -110,10 +128,16 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
                                   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27};
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28};
-    retVal = advData.setManufacturerData(data, sizeof(data));
-    REQUIRE(retVal);
-    retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
-    REQUIRE(!retVal);
+    THEN("Check that first insertion of manufacturer data WITHOUT id is correctly done")
+    {
+      retVal = advData.setManufacturerData(data, sizeof(data));
+      REQUIRE(retVal);
+    }
+    THEN("Check that the insertion of manufacturer data given id after one without id is correctly done")
+    {
+      retVal = advData.setManufacturerData(companyId, dataGivenId, sizeof(dataGivenId));
+      REQUIRE(!retVal);
+    }
   }
 
   WHEN("Overwrite manufacturer data with one as long as max data length")
@@ -124,17 +148,20 @@ TEST_CASE("Test manufacturer data setting", "[ArduinoBLE::BLEAdvertisingData]")
                                   0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                                   12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
     retVal = advData.setManufacturerData(companyId, data, sizeof(data));
-    REQUIRE(retVal);
-
-    advData.updateData();
-    REQUIRE( 0 == advData.remainingLength() );
-    REQUIRE( 0 == advData.availableForWrite() );
-    REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
+    THEN("Manufacturer data should be set correctly")
+    {
+      REQUIRE(retVal);
+
+      advData.updateData();
+      REQUIRE( 0 == advData.remainingLength() );
+      REQUIRE( 0 == advData.availableForWrite() );
+      REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
+    }
   }
 
   WHEN("Check consistency when setting the external advertising data")
   {
-    auto goldenData = advData.data();
+    const auto goldenData = advData.data();
     BLE.setAdvertisingData(advData);
     BLE.advertise();
     REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );
diff --git a/extras/test/src/test_advertising_data/test_service.cpp b/extras/test/src/test_advertising_data/test_service.cpp
index 5c212c1f..66b1689f 100644
--- a/extras/test/src/test_advertising_data/test_service.cpp
+++ b/extras/test/src/test_advertising_data/test_service.cpp
@@ -50,12 +50,13 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData
     const char* service = "00112233445566770011223344556677";
     advData.setLocalName(name);
     oldRemainingLength = advData.remainingLength();
-    retVal = advData.setAdvertisedServiceUuid(service);
-    REQUIRE(!retVal);
-
-    REQUIRE( oldRemainingLength == advData.remainingLength() );
-    advData.updateData();
-    REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
+    THEN("Check that the too long parameter has not been set")
+    {
+      REQUIRE(!advData.setAdvertisedServiceUuid(service)); 
+      REQUIRE( oldRemainingLength == advData.remainingLength() );
+      advData.updateData();
+      REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
+    }
   }
 
   WHEN("Fill to maximum an advertising packet with a service id")
@@ -64,8 +65,7 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData
     const char* name = "11 char str";
     const char* service = "00112233445566770011223344556677";
     advData.setLocalName(name);
-    retVal = advData.setAdvertisedServiceUuid(service);
-    REQUIRE(retVal);
+    REQUIRE(advData.setAdvertisedServiceUuid(service));
 
     advData.updateData();
     REQUIRE(advData.dataLength() == (MAX_AD_DATA_LENGTH));
@@ -76,7 +76,7 @@ TEST_CASE("Test advertised service id setting", "[ArduinoBLE::BLEAdvertisingData
 
   WHEN("Check consistency when setting the external advertising data")
   {
-    auto goldenData = advData.data();
+    const auto goldenData = advData.data();
     BLE.setAdvertisingData(advData);
     BLE.advertise();
     REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );
@@ -91,7 +91,7 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]")
 {
   BLEAdvertisingData advData;
   int oldRemainingLength = advData.remainingLength();
-  uint16_t uuid = 0x1100;
+  const uint16_t uuid = 0x1100;
   bool retVal;
 
   WHEN("Set correct service data")
@@ -100,14 +100,20 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t goldenData[] = {(sizeof(data) + sizeof(uuid) + 1), BLEFieldServiceData, 
                                   0x00, 0x11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
     retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data));
-    REQUIRE(retVal);
-    REQUIRE( (sizeof(data) + 2 + sizeof(uuid)) == (oldRemainingLength - advData.remainingLength()) );
+    THEN("Correctly set parameter")
+    {
+      REQUIRE(retVal);
+      REQUIRE( (sizeof(data) + 2 + sizeof(uuid)) == (oldRemainingLength - advData.remainingLength()) );
+    }
     oldRemainingLength = advData.remainingLength();
 
     advData.updateData();
-    REQUIRE(advData.dataLength() == (sizeof(data) + 2 + sizeof(uuid)));
-    REQUIRE(advData.dataLength() == sizeof(goldenData));
-    REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
+    THEN("Check parameter analyzing advertising raw data")
+    {
+      REQUIRE(advData.dataLength() == (sizeof(data) + 2 + sizeof(uuid)));
+      REQUIRE(advData.dataLength() == sizeof(goldenData));
+      REQUIRE( 0 == memcmp(goldenData, advData.data(), sizeof(goldenData)) );
+    }
   }
 
   WHEN("Set too long service data")
@@ -116,7 +122,10 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27};
     retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data));
-    REQUIRE(!retVal);
+    THEN("Check that the too long parameter has not been set")
+    {
+      REQUIRE(!retVal);
+    }
     REQUIRE( oldRemainingLength == advData.remainingLength() );
     advData.updateData();
     REQUIRE( advData.dataLength() == (MAX_AD_DATA_LENGTH - oldRemainingLength) );
@@ -127,17 +136,23 @@ TEST_CASE("Test service data setting", "[ArduinoBLE::BLEAdvertisingData]")
     const uint8_t data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                             16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
     retVal = advData.setAdvertisedServiceData(uuid, data, sizeof(data));
-    REQUIRE(retVal);
+    THEN("Check correctly set parameter")
+    {
+      REQUIRE(retVal);
+    }
 
     advData.updateData();
     // advData should be full now
-    REQUIRE( 0 == advData.remainingLength() );
-    REQUIRE( 0 == advData.availableForWrite() );
+    THEN("advData should be full now")
+    {
+      REQUIRE( 0 == advData.remainingLength() );
+      REQUIRE( 0 == advData.availableForWrite() );
+    }
   }
 
   WHEN("Check consistency when setting the external advertising data")
   {
-    auto goldenData = advData.data();
+    const auto goldenData = advData.data();
     BLE.setAdvertisingData(advData);
     BLE.advertise();
     REQUIRE( 0 == memcmp(goldenData, BLE.getAdvertisingData().data(), advData.dataLength()) );
diff --git a/extras/test/src/test_uuid/test_uuid.cpp b/extras/test/src/test_uuid/test_uuid.cpp
index 13b655e6..1832c741 100644
--- a/extras/test/src/test_uuid/test_uuid.cpp
+++ b/extras/test/src/test_uuid/test_uuid.cpp
@@ -47,6 +47,6 @@ TEST_CASE("BLE uuid test", "[ArduinoBLE::BLEUuid]")
     REQUIRE(verify);
 
     // print the uuid
-    WARN("test: " << testUuid << ",  golden: " << goldenUuid);
+    //WARN("test: " << testUuid << ",  golden: " << goldenUuid);
   }
 }
\ No newline at end of file
diff --git a/src/BLEAdvertisingData.cpp b/src/BLEAdvertisingData.cpp
index 50063913..d528bdfa 100644
--- a/src/BLEAdvertisingData.cpp
+++ b/src/BLEAdvertisingData.cpp
@@ -186,7 +186,7 @@ bool BLEAdvertisingData::setLocalName(const char *localName)
 bool BLEAdvertisingData::setRawData(const uint8_t* data, int length)
 {
   if (length > MAX_AD_DATA_LENGTH) {
-    length = MAX_AD_DATA_LENGTH;
+    return false;
   }
   _rawData = data;
   _rawDataLength = length;
@@ -195,11 +195,11 @@ bool BLEAdvertisingData::setRawData(const uint8_t* data, int length)
 
 bool BLEAdvertisingData::setRawData(const BLEAdvertisingRawData& rawData)
 {
+  if (rawData.length > MAX_AD_DATA_LENGTH) {
+    return false;
+  }
   _rawData = rawData.data;
   _rawDataLength = rawData.length;
-  if (_rawDataLength > MAX_AD_DATA_LENGTH) {
-    _rawDataLength = MAX_AD_DATA_LENGTH;
-  }
   return true;
 }