Aprende a testar os teus exercícios de C++ no Exercism
Cada exercício fornece os testes unitários e uma receita de compilação CMake. A implementação fica a teu cargo. 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. Executar o executável de testes imprime mensagens para cada teste que falha e indica um estado de saída diferente de zero quando os testes falham.
Nota: O teu código é testado contra o conjunto de testes sempre que compilas o teu projeto. Se o teu código não passar num ou mais testes mas for código C++ válido, ainda assim será compilado.
Trabalhar em cada exercício é um processo de:
Cada exercício traz um ficheiro CMakeLists.txt juntamente com os testes unitários. Contém a receita de CMake já pronta que trata da compilação por ti. Não deves precisar de editar este ficheiro. A receita fornecida assume que a tua implementação existe como um ficheiro de cabeçalho e um ficheiro de código-fonte com o nome do exercício.
Por exemplo, o exercício bob espera uma implementação em bob.h e bob.cpp. Para exercícios com hífenes no nome, assume-se que os ficheiros de código-fonte usam sublinhados, por isso word-count espera word_count.h e word_count.cpp. Podes decidir que a tua implementação é suficientemente simples para caber toda no cabeçalho, e nesse caso podes omitir o ficheiro cpp.
Cria os teus ficheiros de implementação iniciais antes de executar o CMake. Se não tiveres os ficheiros bob.h e bob.cpp quando executares o CMake para o exercício bob, o CMake vai gerar um erro a dizer que não encontra os ficheiros. Estes ficheiros podem estar vazios, mas têm de existir.
Com esta receita, o CMake pode gerar um projeto adequado ao teu ambiente executando cmake -G com um gerador adequado e a localização do diretório do exercício. O CMake vai gerar um script de compilação adequado ao teu sistema operativo. Para manteres esses ficheiros gerados separados do código-fonte do teu exercício, é comum criar um diretório chamado build para guardar esses ficheiros de compilação gerados, bem como o código compilado. Assim, a pasta do teu exercício mantém-se limpa e arrumada.
Depois de o CMake criar o ambiente de compilação, podes compilar o teu código com o comando adequado ao teu ambiente:
make
make Se usares a aplicação CLI do Exercism
Abaixo mostram-se exemplos de como executar o CMake em diferentes ambientes.
O nome do gerador para o CMake é Unix Makefiles.
Partindo do princípio de que o exercício atual é bob e que estamos na pasta do exercício:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Este exemplo mostra como criar ficheiros vazios para a implementação antes de executar o CMake.
Basta escrever make no diretório de compilação para compilar os testes. Isto deve gerar erros de compilação. Depois de corrigires os erros, o make compila e executa os testes.
O Visual Studio tem suporte nativo para projetos CMake, por isso não deves precisar de instalar o CMake em separado nem de o executar fora do Visual Studio. Segue este guia para configurar o projeto CMake no Visual Studio.
O nome do gerador para o CMake é Xcode.
Partindo do princípio de que o exercício atual é bob e que estamos na pasta do exercício:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Este exemplo gera os ficheiros do XCode para que possas abrir o projeto no XCode. Com o projeto aberto no XCode, podes precisar de adicionar outro target. Para um novo target, vai a File -> New -> Target no menu, OS X \ Application \ Command Line Tool -> Next, C++ como linguagem, e indica um nome para o target. Executa o código usando o target.
Se o teu terminal apresentar um erro Xcode x.x not supported, é muito provável que o Xcode não esteja instalado na tua máquina ou que a tua versão esteja desatualizada.
Descarrega e instala o Xcode através da App Store ou através deste link.
Erros semelhantes a The CXX compiler identification is unknown resolvem-se provavelmente seguindo as instruções para instalar o GCC ou adicionando outro target no Xcode, como explicado no parágrafo anterior.
O nome do gerador para o CMake é Unix Makefiles.
Partindo do princípio de que o exercício atual é bob e que estamos na pasta do exercício:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
Neste exemplo, criamos de facto ficheiros vazios para a implementação antes de executar o CMake, mas não criamos um diretório de compilação vazio.
Isto acontece porque a CLI do Exercism usa o ficheiro .exercism/metadata.json no diretório raiz para analisar os casos de teste.
Basta escrever exercism test no diretório raiz para compilar os testes. Isto deve gerar erros de compilação.
Depois de corrigires os erros, executar exercism test outra vez compila e executa os testes através da CLI do Exercism.