Тестирование белого ящика с помощью Google Test

Я пытаюсь использовать GoogleTest для моего проекта хобби на C ++, и мне нужно протестировать внутренние компоненты компонента (следовательно, тестирование белого ящика). На моей предыдущей работе мы просто сделали тестовых классов друзьями испытуемого класса. Но с Google Test, который не работает, так как каждому тесту присваивается свой собственный уникальный класс, полученный из класса прибора, если он указан, а дружба не передается производным классам.

Сначала я создал тестовый прокси-класс, который дружит с тестируемым классом. Он содержит указатель на экземпляр тестируемого класса и предоставляет методы для требуемых, но скрытых членов. Это работало для простого класса, но теперь я должен проверить класс дерева с внутренним классом частных узлов, из которых мне нужно получить доступ и с ним работать.

Мне просто интересно, кто-нибудь, использующий библиотеку GoogleTest, провел любое тестирование белого ящика, и если у них есть какие-либо подсказки или полезные конструкции, которые упростили бы это.


Хорошо, я нашел макрос FRIEND_TEST, определенный в документации, а также некоторые подсказки о том, как проверить частный код в расширенном руководстве. Но помимо того, что у вас есть огромное количество дециляций друзей (т. Е. Один FRIEND_TEST для каждого теста), есть ли более простой вариант для использования, или я должен отказаться от использования GoogleTest и перейти к другой тестовой платформе?

7 голосов | спросил Daemin 24 J0000006Europe/Moscow 2011, 10:39:43

1 ответ


1

Вы не должны тестировать частные методы здесь и here . Это делает ваши тесты хрупкими, поскольку рефакторинг внутреннего кода класса будет означать рефакторинг некоторых тестов - таким образом, вы теряете уверенность в том, что эти тесты работают.

Вы просмотрели mocks ? Я думаю, что этот подход может помочь вам больше.

Кроме того, посмотрите здесь для аналогичного вопроса.

ответил Sardathrion 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 30 Sep 2011 12:55:09 +0400 2011, 12:55:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132