Files
esphome/tests/components
Claude d6ee57a7b9 [bthome_ble] Refactor to list-based sensor configuration
Refactored the component to use a list-based configuration structure that
reduces duplication and makes it clearer that multiple sensors come from
the same device.

New configuration format:

sensor:
  - platform: bthome_ble
    mac_address: "A4:C1:38:12:34:56"
    bindkey: "..." # optional
    sensors:
      - type: temperature
        name: "Temperature"
      - type: humidity
        name: "Humidity"

binary_sensor:
  - platform: bthome_ble
    mac_address: "A4:C1:38:9A:BC:DE"
    binary_sensors:
      - type: motion
        name: "Motion"
      - type: door
        name: "Door"

Benefits:
- MAC address and bind key are specified once per device
- More efficient (one BLE listener per device instead of per sensor)
- Clearer relationship between sensors from the same device
- Matches user expectations for multi-sensor devices

Updated test configurations to demonstrate the new format.
2025-11-18 20:36:06 +00:00
..
2025-09-26 08:53:21 +12:00
2025-11-03 18:29:30 -06:00

How to write C++ ESPHome unit tests

  1. Locate the folder with your component or create a new one with the same name as the component.
  2. Write the tests. You can add as many .cpp and .h files as you need to organize your tests.

IMPORTANT: wrap all your testing code in a unique namespace to avoid linker collisions when compiling testing binaries that combine many components. By convention, this unique namespace is esphome::component::testing (where "component" is the component under test), for example: esphome::uart::testing.

Running component unit tests

(from the repository root)

./script/cpp_unit_test.py component1 component2 ...

The above will compile and run the provided components and their tests.

To run all tests, you can invoke cpp_unit_test.py with the special --all flag:

./script/cpp_unit_test.py --all

To run a specific test suite, you can provide a Google Test filter:

GTEST_FILTER='UART*' ./script/cpp_unit_test.py uart modbus

The process will return 0 for success or nonzero for failure. In case of failure, the errors will be printed out to the console.