Типичный подход заключается в следующем:
Но вы могли бы подумать, зачем вам нужно модульное тестирование кода. Простое тестирование того, имеют ли два байта некоторые предопределенные значения, не будет очень ценным, на мой взгляд. Поскольку сложность очень низкая. Тесты нужно писать потому, что они вам как-то помогают, а не потому, что люди в интернете говорят вам, что вы должны писать юнит-тесты.
Можно также тестировать более крупные "модули", т.е. не тестировать код, который проверяет заголовок, а проверять код, который получает полный пакет и что-то делает с этим пакетом. Запишите несколько пакетов от устройств и проверьте, что они обрабатываются так, как должны. Вы также можете сгенерировать несколько случайных данных и проверить, что они также обрабатываются так, как ожидается.
Возможно, вы также захотите рассмотреть, что может пойти не так, и как обрабатывать такие сбои. Например, если возможно получение байтов с неправильной эндианальностью, может быть полезно проверить такой случай и выдать ошибку, которая предупредит оператора о такой ошибке.
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: