Voglio organizzare i test per un progetto abbastanza grande da far riflettere il tempo (specialmente per il server CI).
Dire che ho questo codice che vorrei testare:
//foo/greet.cpp
#include <stdio.h>
#include "foo/greet.h"
int greet() { return printf("Hello, World!\n"); }
E ho questo programma principale che è boilerplate che non testerò.
//main.cpp
#include "foo/greet.h"
int main() { return greet(); }
Userò questo codice per generare un programma unittest
//testgreet.cpp
#include <some_test_framework.h>
SOME_TEST_FRAMEWORK("Testing greet")
SOME_TEST_FRAMEWORK_ASSERT(greet() > 0)
SOME_TEST_FRAMEWORK_END()
Ho pensato al seguente
- Ignora la build di
greet.cpp
per la destinazione non più valida e il collegamento con gli oggetti - Crea una struttura di progetto separata per i test, ma condividi la cartella di output
- Pila tutto in un posto, magari con una nuova cartella chiamata test
- Crea una libreria di
greeting
e collega i target principali e quelli di unittests a
Come posso organizzare il mio progetto in modo che possa creare greet.cpp
solo una volta, ma ridurre la confusione causata dall'avere due obiettivi che condividono molto codice?
Questa domanda è correlata , ma non duplicata (IMHO).
(+ Ho provato a rendere la mia domanda generica, riutilizzabile e a prova di futuro.Se pensi che sia troppo basata sull'opinione pubblica, vota per chiudere e non ripeterò)