Я столкнулся с cppunit, но это не выглядело суперпростым в использовании (возможно, я не выглядел твердым, возможно, потому что C++ не работает как Java/C#). Там широко используются, простые альтернативы?
На самом деле действительно ли cppunit является стандартной платформой поблочного тестирования для C++?
Для C++ нет библиотеки модульного тестирования стандарта . Вариантов выбора много, кппюнит - один из них.
В моей компании мы используем Google Test вместе со своим партнёром Google Mock для юнит-тестирования и насмешки над объектами. Я нахожу, что они оба сочетают в себе простоту использования и гораздо более мощные, чем кппунит.
Вот список библиотек по тестированию единиц.
http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks#c.2b.2b
Однако, насколько я знаю, CPPUNIT является самым популярным.
CPPUNIT, вероятно, является первой структурой тестирования подразделения для C ++. Это прямой порт JUNIT, знаменитых Java Framework. Это делает переход от Junit проще, но по стоимости несколько тяжелых рамок, которые не используют преимущества возможностей C ++, таких как Raii. Это причина, по которой были созданы легкие версии, такие как CPPunitlite, NanocppUnit. CPPUNIT2 должен был улучшить это, среди других улучшений.
TUT был очень легким, только один заголовок, но последние версии представили библиотеку.
Что касается «стандартной» фреймворки, их нет, и C ++ 1x не определяет один.
Я создал тестируемый пакет под названием Saru ( http://github.com/mikeando/saru ) для моего собственного dev code. Его лицензированный код BSD. Я разработал его, так как мне не понравилось несколько особенностей других испытаний. Это не широко используется, но я использовал его на нескольких коммерческих проектах, распространенных по двум компаниям.
Так что SARU обращается к большинству этих функций Отказ Его внимание на том, чтобы быть в состоянии запустить набор тестов, написанных на разных языках. С минимальными тестовыми размерами. Вот самые маленькие (неудачные) тестирование C ++
//SARU : dummy dummy
int main() { return (1==2)?0:1; }
All Saru действительно заботится о том, это возвращаемое значение двоично, которое он компилирует. Затем он анализирует вывод, чтобы определить, какие тесты не удалось и так далее. У него есть заголовки, чтобы сделать работу с C ++ немного приятнее, чем вышеприведенный тривиальный пример:
//SARU : dummy dummy
#include "MyStruct.h"
#include "saru_cxx.h"
class Fixture
{
MyStruct s_;
Fixture() : s_() {}
void test_A_is_B()
{
SARU_ASSERT_EQUAL( s_.A(), s_.B() );
}
void test_C_is_7()
{
SARU_ASSERT_EQUAL( 7, s_.C() );
}
};
int main()
{
saru::TestLogger logger;
SARU_TEST( Fixture:: test_A_is_B, logger );
SARU_TEST( Fixture:: test_C_is_7, logger );
logger.printSummary();
return logger.allOK()?0:1;
}
или если вам не нравится, как его работают заголовки C ++, он должен иметь возможность интегрироваться с другими нерешественными библиотеками с минимальными слоями.
Но он также будет запустить тесты, написанные в PHP & Python. Таким образом, вы можете настроить полнофункциональные тесты с SARU. Или вы можете запустить что-то вроде lint над вашим кодом как часть тестового набора.
Тест Google Framework - это альтернатива.
Вот простой пример из документации :
// Tests factorial of 0.
TEST(FactorialTest, HandlesZeroInput) {
EXPECT_EQ(1, Factorial(0));
}
// Tests factorial of positive numbers.
TEST(FactorialTest, HandlesPositiveInput) {
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPECT_EQ(6, Factorial(3));
EXPECT_EQ(40320, Factorial(8));
}
Он также хорошо играет с GMOCK , MOCK Framework Google для C ++.