Может ли какая-либо IDE или инфраструктура помочь быстро протестировать новый код без необходимости запуска всего приложения - PullRequest
4 голосов
/ 12 февраля 2009

Я в основном разрабатываю на родном C ++ для Windows, используя Visual Studio.

Часто я обнаруживаю, что создаю новую функцию / класс или что-то в этом роде, и я просто хочу быстро протестировать тот фрагмент логики, который я только что написал.

Часто мне приходится запускать все приложение, что иногда может занять некоторое время, так как есть много связанных частей.

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

1011 * т.е. *

Допустим, у меня есть проект с примерно 1000 файлами, и я добавляю новый класс под названием Adder. У Adder есть метод Add (int, int);

Я просто хочу, чтобы IDE / инструмент позволял мне тестировать только класс Adder (без необходимости создавать новый проект и писать фиктивный main.cpp), позволяя мне указывать значение входных данных, поступающих в объект Adder , Точно так же было бы неплохо, если бы это позволило мне указать ожидаемый результат от тестируемого объекта.

Что было бы еще круче, если бы IDE / инструмент затем «записывал» эти наборы входов / ожидаемых выходных данных и автоматически создавал класс тестера модулей на их основе. Если бы я добавил больше наборов ввода / вывода, он бы продолжал строить историю ввода / вывода.

Или как насчет этого: что, если я запустил реальное приложение, передал в него некоторые реальные данные, и чтобы IDE / инструмент захватил все входные данные, поступающие в тестируемый модуль. Таким образом, я могу быстро возобновить тестирование, если обнаружу какие-либо ошибки в моей программе или я хочу немного изменить ее интерфейс. Я думаю, что эта функция была бы очень полезной и может помочь разработчику быстро протестировать / изменить свой код.

Я говорю о тестировании фиктивного объекта / модуля, которое уже существует?

Sidenote: было бы здорово, если бы в отладчике Visual Studio была реализована технология «воспроизведения», при которой пользователь может вернуться назад, чтобы найти, что пошло не так. Такой отладчик уже существует здесь: http://www.totalviewtech.com/

Ответы [ 4 ]

2 голосов
/ 12 февраля 2009

Начать статическое модульное тестирование в C ++ очень просто - три строки кода .

VS немного беден тем, что вам нужно пройти через мастера, чтобы создать проект для сборки и запуска тестов, поэтому, если у вас есть тысяча классов, вам понадобится тысяча проектов. Так что для больших проектов на VS я имел тенденцию организовывать проект в несколько DLL для самостоятельной сборки и тестирования, а не монолитных.

Альтернативу статическим тестам, более похожим на ваш скрипт 'poke and dribble', можно сделать в python, используя swig для привязки вашего кода к интерпретатору, и doc тесты python, Я не использовал оба вместе сам. Опять же, вам понадобится отдельная цель для создания привязки python и другая для запуска тестов, а не просто кнопка «запустить этот класс».

0 голосов
/ 25 июня 2014

По сути, вы спрашиваете , как я могу протестировать одну функцию вместо всего приложения . Вот что такое юнит-тестирование , и вы найдете много вопросов о юнит-тестировании C ++ на SO.

0 голосов
/ 12 февраля 2009

Я думаю, вы говорите о модульном тестировании и фиктивных объектах. Вот пара библиотек фиктивных объектов C ++, которые могут быть полезны: -

0 голосов
/ 12 февраля 2009

Я бы пошел с Boost.Test (см. Учебник здесь )). Идея состоит в том, чтобы добавить новую конфигурацию в ваш проект, что исключит из сборки все ненужные файлы cpp. Вам просто нужно добавить .cpp файлы, чтобы описать тесты, которые вы хотите пройти.

Я не эксперт в этой области, но я использовал эту технику в прошлом, и она работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...