Тестовое покрытие протобуфф-сообщений

У меня есть .proto файл с несколькими
сообщения, которые выглядят примерно так,

Message messageA{
required double value =1;
//more fields
}

Message messageB{
required int32 value =1;
//more fields
}

Я хотел бы проверить, что каждое добавленное в файл сообщение будет иметь поле «значение».
Если этого не произойдет, правильным результатом будет неудачный юнит-тест.

Есть ли лучший способ сделать это без
надеетесь, что следующий программист добавит экземпляры сообщений в тест?

Благодарю.

0

Решение

Вы можете достичь этого с помощью отражения буфера протокола. FileDescriptor Класс позволяет перебирать все сообщения в файле (для этого используйте функцию «message_type (int index)»). Затем вы можете использовать «FindFieldByName ()» в сообщении дескриптор определить, есть ли поле с именем «значение».

Что касается совершенно не связанных сторон, я бы настоятельно рекомендовал вам использовать «необязательный» вместо «обязательный» в сообщениях буфера протокола. Требования к приложению лучше всего предъявляются самим приложением, а не логикой десериализации; использование «необязательного» позволяет более аккуратно завершать код приложения, если это условие не выполняется, тогда как «обязательное» вызывает сбой, и, к сожалению, изменение поля в сообщении с «обязательного» на «необязательное» позднее может быть очень опасным (поскольку старый приложения могут все еще считать это необходимым, в то время как последующие приложения могут больше не заполнять его).

1

Другие решения


По вопросам рекламы [email protected]