редактировать: Этот вопрос может быть закрыт из-за голосования, потому что «это не настоящий вопрос программирования». На что я могу только парировать «ня!» Теперь я нашел этот вопрос который напрямую связан и должен помочь.
Я методично обновляю свой исходный код до C ++ 11 раз, и одна из частей, с которой взаимодействует большая часть моего кода, — это UnitTest ++.
Я посвящаю вторую половину каждой моей реализации cpp
файлы для модульных тестов, поэтому они включают в себя много
TEST(testname) {
// test code
}
деклараций.
Сейчас UnitTest ++ около 8 лет, и он все еще прекрасно компилируется, поэтому мне не нужно срочно его заменять. Однако я обнаружил, что он, вероятно, больше не поддерживается (хотя его существующие функции кажутся достаточно надежными, это плохой признак), поскольку веб-сайт и sourceforge не работают.
Поэтому, несмотря на то, что мой код теперь работает нормально, мне может быть полезно перейти на более совершенную систему раньше, чем позже, потому что это уменьшит нагрузку на перевод в будущем.
Я немного осмотрелся, и мне показалось, что есть несколько вариантов. Особенно интересным является libunittest и другие, как ЛОВИТЬ который только для заголовка.
У меня вопрос к людям, которые, возможно, имели опыт работы с UnitTest ++ в прошлом и других системах модульного тестирования, что сработало для вас и есть ли у вас какие-либо рекомендации. Я ищу что-то, что является чрезвычайно портативным и которое имеет ноль внешних зависимостей помимо компилятора C ++ 98/03 или C ++ 11 (gcc, clang, msvc) и стандартных библиотек, и где наличие только заголовка является плюсом но не обязательно.
Поэтому я думаю, что мои предпочтения имеют тенденцию сужать варианты совсем немного. Даже с UnitTest ++ я наслаждаюсь его переносимостью и автономностью, но мне пришлось написать примерно сто строк кода, чтобы расширить его, чтобы он был гибким для меня двумя способами:
Идеальный ответ будет что-то вроде этот ни от кого, кроме одного из парней, стоящих за самим UnitTest ++! Но этой статье 10 лет !!
Вы можете найти Google Test быть полезным. Он поддерживает все, что делает UnitTest ++ и многое другое, и все еще поддерживается (и регулярно используется в Google). Кроме того, он имеет соответствующую библиотеку насмешек, Google Mock для создания имитаций, что довольно полезно для создания имитаций.
У меня есть еще два:
Оба активно развивается.
это очень портативный […] […] за пределами компилятора C ++ 98/03 или C ++ 11 (gcc, clang, msvc) и
стандартные библиотеки
CppUTest может использоваться с различными компиляторами и платформами — он также используется для встроенных систем. Кроме того, в имеет встроенный C интерфейс.
и который имеет нулевые внешние зависимости
Не так много, чтобы сказать: скачать / оформить заказ и построить, готово.
а наличие заголовка только плюс, но не обязательно.
К сожалению, это невозможно с CppUtest, для ссылки требуется библиотека тестов.
позвольте мне указать конкретные тесты для запуска
Возможно и объяснено в руководстве (не очень сложно). Увидеть Вот.
настроить поведение отчетов для тестов, например показывать данные о времени выполнения теста и суммировать итоги в конце
Это делается по умолчанию в подробном режиме. Также возможно экспортировать файлы JUnit Xml с результатом. Кроме того, вы можете настроить формат вывода для всех шагов и видов вывода.
Пример кода:
TEST_GROUP(FirstTestGroup)
{
/*
* Test group = test suite
* You can implement tear down / setup here too
*/
};
TEST(FirstTestGroup, FirstTest)
{
FAIL("Fail me!");
}
TEST(FirstTestGroup, SecondTest)
{
int value = 4;
const int expected = 4;
CHECK_EQUAL(expected, value);
}
Наконец, это не сложно использовать: проверьте Руководство.
Btw. он содержит макет (CppUMock) и встроенный детектор утечки памяти.
Документация: