C++:
Scrivere test
Come fare:
Utilizzando Google Test Framework
Una delle librerie di terze parti più popolari per scrivere test in C++ è Google Test. Prima di tutto, dovrai installare Google Test e collegarlo al tuo progetto. Una volta configurato, puoi iniziare a scrivere casi di 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();
}
Salva il codice in un file e compilalo con il compilatore g++, collegando la libreria Google Test. Se tutto è impostato correttamente, eseguendo l’eseguibile risultante verrà eseguito il test e, se la funzione add
funziona come previsto, vedrai qualcosa del tipo:
[==========] 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.
Utilizzando Catch2
Un altro framework di test popolare per C++ è Catch2. Ha una sintassi più semplice e di solito non richiede il collegamento a una libreria (solo header). Ecco un esempio di come scrivere un semplice test con Catch2:
#define CATCH_CONFIG_MAIN // Questo dice a Catch di fornire un main() - farlo solo in un file cpp
#include <catch.hpp>
int multiply(int a, int b) {
return a * b;
}
TEST_CASE("I numeri interi vengono moltiplicati", "[multiply]") {
REQUIRE(multiply(2, 3) == 6);
}
Compilando ed eseguendo questo test, Catch2 fornisce un output chiaro che indica se il test è passato o fallito, insieme a tutte le informazioni necessarie per debuggare i fallimenti:
===============================================================================
Tutti i test passati (1 affermazione in 1 caso di test)
Questi esempi mostrano come l’integrazione di framework di test nel tuo flusso di lavoro di sviluppo C++ possa migliorare significativamente l’affidabilità e la manutenibilità del tuo codice.