Fiz um programa que "coleta" os testes unitários de dentro
de um projeto C ou C++.
Esta linha de comando:
maketest.c out.c file1.c file2.c ....
Coleta os testes que estão dentro da seção
#ifdef TEST de cada arquivo (file1.c , file2.c) :
#ifdef TEST
void Test() {
}
#endif
gerando um arquivo out.c que tem uma função
DoUnitTests que chama todos os testes.
Esta DoUnitTests pode ser chamada no main do programa
para executar os testes.
Então, a automatização consiste em remover/adicionar todos
os unittests e o programador pode focar em apenas escrever
o teste no arquivo normal do fonte. Programas de teste separados
requerem configuração extra de includes libs etc, então vejo
esta integração como uma vantagem. Todo código de teste
pode ser removido do executável final bastando não definir
a macro TEST.
O que exatamente o teste faz, como são os asserts é por conta de
cada um. Eu basicamente tenho uma função ASSERT que loga
o erro no console.
O fonte é pequeno e simples e pode ser customizado por cada um.
Código (compila windows e linux)
http://thradams.com/makeunittest.htm
Pretendo quando sobrar tempo colocar no github.
Fiz também uma versão que lê o projeto do VC++ mas ainda
tenho que atualizá-la (não estou usando no momento então deixei
para depois).