Поддержанные фреймворки:
- Google Test (
test_gtest.cpp) - Catch2 (
test_catch2.cpp) - Doctest (
test_doctest.cpp) - Boost.Test (
test_boost.cpp) - QTest (для Qt,
test_qtest.cpp)
Каждый файл содержит:
- Проверку положительных значений (0, 5, 10)
- Обработку отрицательного ввода (
-5)
// Один и тот же функционал: факториал
int factorial(int n) {
if (n < 0) return -1; // ошибка
return (n <= 1) ? 1 : n * factorial(n - 1);
}
Google Test
// ---------------- Google Test ----------------
// File: test_gtest.cpp
#include <gtest/gtest.h>
TEST(FactorialTest, PositiveNumbers) {
EXPECT_EQ(factorial(0), 1);
EXPECT_EQ(factorial(5), 120);
EXPECT_EQ(factorial(10), 3628800);
}
TEST(FactorialTest, NegativeNumber) {
EXPECT_EQ(factorial(-5), -1);
}
Catch2
// ---------------- Catch2 ----------------
// File: test_catch2.cpp
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
TEST_CASE("Factorial calculation") {
REQUIRE(factorial(0) == 1);
REQUIRE(factorial(5) == 120);
REQUIRE(factorial(10) == 3628800);
}
TEST_CASE("Factorial with negative input") {
REQUIRE(factorial(-5) == -1);
}
Doctest
// ---------------- Doctest ----------------
// File: test_doctest.cpp
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
TEST_CASE("Factorial correctness") {
CHECK(factorial(0) == 1);
CHECK(factorial(5) == 120);
CHECK(factorial(10) == 3628800);
CHECK(factorial(-5) == -1);
}
Boost.Test
// ---------------- Boost.Test ----------------
// File: test_boost.cpp
#define BOOST_TEST_MODULE FactorialTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(FactorialPositive) {
BOOST_CHECK_EQUAL(factorial(0), 1);
BOOST_CHECK_EQUAL(factorial(5), 120);
BOOST_CHECK_EQUAL(factorial(10), 3628800);
}
BOOST_AUTO_TEST_CASE(FactorialNegative) {
BOOST_CHECK_EQUAL(factorial(-5), -1);
}
QTest
// ---------------- QTest ----------------
// File: test_qtest.cpp
#include <QtTest>
class TestFactorial : public QObject {
Q_OBJECT
private slots:
void testPositive() {
QCOMPARE(factorial(0), 1);
QCOMPARE(factorial(5), 120);
QCOMPARE(factorial(10), 3628800);
}
void testNegative() {
QCOMPARE(factorial(-5), -1);
}
};
QTEST_MAIN(TestFactorial)
