Testes no percurso de C

Aprende a testar os teus exercícios de C no Exercism


Cada exercício fornece os testes unitários e uma receita de construção do Make. A implementação é da tua responsabilidade.

Cada ficheiro de teste destina-se a ser ligado à tua implementação, para dar origem a um executável de consola que corre os testes. Ao correr o executável de testes, é impressa uma mensagem por cada teste falhado e é reportado um estado de saída diferente de zero quando os testes falham.

Para resolveres um exercício:

  • Cria a construção inicial com o Make
  • Para cada teste unitário:
    • Remove a linha TEST_IGNORE().
    • Corrige os erros de compilação para que o teste falhe.
    • Implementa apenas o suficiente para o teste passar.
    • Refatora a tua implementação para melhorar a legibilidade, reduzir a duplicação, etc.

Compilar e correr os testes

Cada exercício traz um ficheiro makefile e um ficheiro .c com os testes unitários. Não deves precisar de editar o ficheiro Make. O ficheiro Make fornecido assume que a tua implementação existe como um ficheiro de cabeçalho (.h) e um ficheiro de código-fonte (.c) com o nome do exercício.

Por exemplo, o exercício bob espera uma implementação em bob.h e bob.c. Nos exercícios com hífenes no nome, assume-se que os ficheiros de código-fonte usam underscores, por isso word-count espera word_count.h e word_count.c. Podes decidir que a tua implementação é suficientemente simples para caber toda no cabeçalho, caso em que podes omitir o ficheiro .c.

Cria os ficheiros da tua implementação inicial antes de correr o Make. Se não tiveres os ficheiros bob.h e bob.c quando correres o Make para o exercício bob, o Make gera um erro a dizer que os ficheiros não foram encontrados. Estes ficheiros podem estar vazios, mas têm de existir.

Compilar o teu código

A forma mais simples de compilar o teu código é usar make na linha de comandos (CLI). No Linux, a CLI está disponível no bash ou similar; no MacOS, usa o Terminal. No Windows 10, está disponível o Windows Subsystem for Linux (WSL) Bash.

Para isso, assumindo que o diretório atual é a pasta do exercício:

$ make

Isto compila o teu código e corre os testes.

O makefile também inclui uma construção que verifica alguns erros comuns, como fugas de memória e acessos fora dos limites de um array. Para correr estas verificações, usa o seguinte na linha de comandos:

$ make memcheck

Limpeza

Para limpar depois de uma construção, podes dizer ao make para apagar toda a saída da construção, incluindo o executável:

$ make clean

Alternativa de construção no MacOS

No MacOS, também podes usar o Xcode. Para compilar o código, seleciona Build na barra de ferramentas.