Сборка и запуск модульных тестов C ++ в Visual Studio (TDD) - PullRequest
7 голосов
/ 03 ноября 2008

У меня большой проект, для которого я пытаюсь использовать TDD. Я использую Tut в качестве моей тестовой среды, которая имеет свои недостатки, но достаточна для того, что мне нужно.

Мне нужно использовать тестовые швы времени ссылки, каждый тест должен быть в своем собственном исполняемом файле . Затем проект для этого исполняемого файла запускается как шаг после сборки.

К сожалению, это означает, что мой Visual Studio Sln заполняется тестами, которые не масштабируются и также скрывают важные проекты.

Кто-нибудь знает лучший способ выполнения этих тестов? Можно ли спрятать проекты от сборки и при этом все же создать их?

Ответы [ 3 ]

4 голосов
/ 03 ноября 2008

«Можно ли скрыть проекты от сборки, но при этом все еще создавать их?»

Вы можете сделать отдельное решение для тестовых случаев. Затем вы можете настроить шаг пост-сборки ваших основных проектов. Эта пост-сборка должна создавать тест-проекты через отдельное решение и запускать их. Сборка тест-проектов должна выполняться через командную строку (см., Например, здесь )).

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

#pragma comment(lib, "libname")

Подробнее см. на этой странице MSDN .

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

Не знаю, если вы все еще ищете решение. Но вот идея:

Вы можете хранить все свои тесты в одной библиотеке и написать приложение, которое порождает себя и выполняет каждый тест. Таким образом, вы получите один исполняемый файл (и, следовательно, один проект) для набора, и каждый тест будет похож на отдельный исполняемый файл.

На самом деле это механизм, используемый в CUnitWin32 . Возможно, вы даже сможете обернуть свои тесты в эту среду.

0 голосов
/ 07 ноября 2008

Вы можете попробовать сгруппировать свои тесты в папки (они называются фильтрами?) В вашем решении в обозревателе решений. Это отделит тесты от других ваших проектов.

Но, в противном случае, не могли бы вы использовать тестовые швы времени ссылки (да, я знаю, что, вероятно, уже слишком поздно предлагать это) и использовать полиморфизм для обеспечения изменений во время выполнения и иметь меньше тестовых проектов?

...