Формат для межъязыковых общих тестовых данных - PullRequest
1 голос
/ 02 сентября 2011

В настоящее время я работаю на стороне C ++ библиотеки шрифтов как на C ++, так и на Java.

Мы хотели бы автоматически генерировать тестовые данные из нескольких шрифтов, и для тестирования мы используем Google Test и JUnit.

Я напишу скрипт для генерации данных в этом общем формате, которые затем будут анализироваться в тестах. Дело в том, что для C ++ я также хотел бы использовать параметризованные в Google Test тесты, а это означало бы наличие данных и в C ++.

Итак, я думаю о выводе данных в каком-то общем формате и создании файлов C ++ из этого.

Обычно мы рассматриваем XML или JSON, но, похоже, что протоколные буферы очень легко подходят для генерации кода, что делает их интересными. Я никогда не использовал их и не просматривал документацию, они, кажется, действительно хороши в определении сообщений, не столько сохраняя фактические значения (так что я могу определить сообщение Person, но я действительно хочу сохранить несколько констант Person) .

Какой формат мы должны использовать?

Спасибо!

1 Ответ

1 голос
/ 04 сентября 2011

Похоже, что буфер протокола хорошо подходит для вашего случая использования.Он быстрый и простой в использовании как в среде C ++, так и в среде Java.Он также очень стабилен, хорошо документирован и широко используется за пределами Google.

Что касается хранения нескольких объектов в двоичном потоке, для этого существуют общеизвестные традиционные методы.См., Например, этот ответ SO: Хранение нескольких сообщений в одном двоичном файле буфера протокола

Имейте в виду, что, хотя Protobuf является двоичным форматом, все еще возможно преобразовать ваш тестслучаи в удобочитаемом формате, таком как JSON или XML.Вот некоторые соответствующие ссылки:

...