C++:
Письмо тестів
Як це робити:
Використовуючи Google Test Framework
Однією з найпопулярніших сторонніх бібліотек для написання тестів на C++ є Google Test. Спочатку вам потрібно встановити Google Test і зв’язати його з вашим проектом. Після налаштування, ви можете почати писати тестові випадки.
#include <gtest/gtest.h>
int add(int a, int b) {
return a + b;
}
TEST(TestSuiteName, TestName) {
EXPECT_EQ(3, add(1, 2));
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Збережіть код у файлі та скомпілюйте його за допомогою компілятора g++, зв’язуючи бібліотеку Google Test. Якщо все налаштовано правильно, запуск результуючого виконуваного файлу запустить тест, і якщо функція add
працює як очікується, ви побачите щось таке:
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from TestSuiteName
[ RUN ] TestSuiteName.TestName
[ OK ] TestSuiteName.TestName (0 ms)
[----------] 1 test from TestSuiteName (0 ms total)
[==========] 1 test from 1 test suite ran. (1 ms total)
[ PASSED ] 1 test.
Використовуючи Catch2
Ще один популярний фреймворк для тестування на C++ - це Catch2. Він має простіший синтаксис і зазвичай не вимагає зв’язування з бібліотекою (лише з заголовочним файлом). Ось приклад того, як написати простий тест із Catch2:
#define CATCH_CONFIG_MAIN // Це вказує Catch надати main() - робіть це лише в одному cpp файлі
#include <catch.hpp>
int multiply(int a, int b) {
return a * b;
}
TEST_CASE( "Цілі числа множаться", "[multiply]" ) {
REQUIRE( multiply(2, 3) == 6 );
}
Після компіляції та запуску цього тесту, Catch2 надає чіткий вивід, що вказує, чи пройшов тест чи ні, разом із будь-якою інформацією, необхідною для відладки невдач:
===============================================================================
Всі тести пройшли (1 твердження в 1 тестовому випадку)
Ці приклади показують, як інтеграція фреймворків тестування у ваш робочий процес розробки на C++ може значно покращити надійність і підтримуваність вашого коду.