LINUX.ORG.RU

Google test

 google test,


0

1

Захотелось освоить tdd, решил использовать google c++ testing framework. Как правильно его использовать? Создавать проект, который будет включать .h из тестируемого проекта( тогда возникает проблема с cpp файлами, которые не будут находиться, следовательно не будут находится определения функций), или же писать тесты прямо в тестируемом проекте и делать это с условной компиляцией?

int main()
{
#ifdef UNIT_TEST
    return RUN_ALL_TESTS();
#else
    run_useful_code();
    return 0;
#endif
}

Второй вариант видится мне плохим, так как необходимо разграничивать эти сущности. Какая принята практика при tdd?

никогда так не делай, заведи отдельный проект для тестинга - тебе жалко что-ли?

shty ★★★★★
()

Как правильно его использовать? Создавать проект, который будет включать .h из тестируемого проекта( тогда возникает проблема с cpp файлами, которые не будут находиться, следовательно не будут находится определения функций)

да пропиши тупо пути где их надо смотреть и мозга не засоряй себе

shty ★★★★★
()

Во-первых, создай отдельный проект. Во-вторых, выбери один из подходов к линковке с тестируемым кодом: 1. собираешь исходники один раз в статические библиотеки и линкуешь их к тестам 2. включаешь исходники в тестовый проект 3. инклюдишь тестируемые cpp-файлы в исходник с тестами, которые его тестируют.

На CMake любой из этих вариантов легко, гибко и удобно реализуется.

kulti ★★
()

а запускать тесты из IDE никак? Всё равно TDD подразумевает наличие хотя бы нормального редактора кода, а в идеале - IDE с возможностями автоматического рефакторинга.

у мну на жабке используется условная компиляция, но не благодаря if'у прямо в main (кровь-кишки-расчлененка), а благодаря нескольким точкам входа. Один мэйн для кода, другой - для тестов. Благодаря тому, что это разные сущности, у них и мэйны очень разные, смешивать вообще никакого смысла. А из консольки их собирать/запускать указывая параметром чо хочешь получить.

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.