Допустим, я пишу с ++ драйвер для управления некоторым устройством на последовательной шине. Это упрощенная версия проблемы. У меня есть класс DeviceDriver
, у которого есть std::vector<unsigned char> transmitFrames(int deviceNumber)
метод. Возвращает два значащих байта, за которыми следует постоянное число нулевых значений. Шаблон:
transmitFrames(0)
должен возвращать {0xFF, 0xFF}
, transmitFrames(1)
должен возвращать {0xFF, 0xFF, 0x00, 0x00}
, transmitFrames(2)
должен возвращать {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00}
...
При тестировании этот метод должен Я использую жестко закодированные ожидаемые массивы или я должен генерировать их где-нибудь? Жестко закодированную версию практически невозможно написать, потому что transmitFrames(100)
вернет вектор многих значений. Сгенерированная версия будет в порядке, но как насчет алгоритма? Это будет так же, как в классе. Это нарушило бы правило DRY и, конечно, алгоритм тестирования все еще имел бы ошибку. Я использую каркас Googletest. Как бороться с такими проблемами, как длинные массивы в модульном тестировании?