Saiba como testar seus exercícios de C++ no Exercism
Cada exercício fornece os testes de unidade e uma receita de build do CMake. Você fornece a implementação. Cada arquivo de teste deve ser linkado à sua implementação para produzir um executável de console que roda os testes. Ao rodar o executável de testes, ele imprime mensagens para cada teste que falha e reporta um código de saída diferente de zero quando os testes falham.
Observação: Seu código é testado contra a suíte de testes toda vez que você compila seu projeto. Se o seu código não passar em um ou mais testes, mas for código C++ válido, ele ainda será compilado.
Trabalhar em cada exercício é um processo de:
Cada exercício traz um arquivo CMakeLists.txt junto com os testes de
unidade. Ele contém a receita pronta do CMake para cuidar do build para você.
Você não deve precisar editar esse arquivo. A receita fornecida assume que
sua implementação existe como um arquivo de cabeçalho e um arquivo-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ífens no nome, presume-se que os arquivos-fonte
usem underscores, então word-count espera
word_count.h e word_count.cpp. Você pode decidir que sua
implementação é simples o bastante para ficar inteiramente no
cabeçalho, e nesse caso pode omitir o arquivo cpp.
Crie seus arquivos de implementação iniciais antes de rodar o CMake. Se
você não tiver os arquivos bob.h e bob.cpp ao rodar
o CMake para o exercício bob, o CMake vai gerar um erro dizendo que os arquivos
não foram encontrados. Esses arquivos podem estar vazios, mas precisam existir.
Com essa receita, o CMake pode gerar um projeto adequado ao seu ambiente
rodando cmake -G com um gerador adequado e o local do
diretório do exercício. O CMake vai gerar um script de build adequado
ao seu sistema operacional. Para manter esses arquivos gerados separados do
código-fonte do seu exercício, é comum criar um diretório chamado build
para guardar esses arquivos de build gerados, além do código compilado. Assim,
a pasta do seu exercício fica organizada e sem bagunça.
Depois que o CMake criar o ambiente de build, você pode compilar seu código usando o comando adequado ao seu ambiente:
make
make Se estiver usando o aplicativo Exercism CLI
Veja abaixo exemplos de como rodar o CMake em ambientes diferentes.
O nome do gerador para o CMake é Unix Makefiles.
Supondo que o exercício atual seja bob e que estejamos na pasta do exercício:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Este exemplo mostra como criar arquivos vazios para a implementação antes de rodar o CMake.
Basta digitar make no diretório build para compilar os testes. Isso deve
gerar erros de compilação. Depois de corrigir os erros, make vai compilar e
rodar os testes.
O Visual Studio tem suporte nativo a projetos CMake, então você não deve precisar instalar o CMake separadamente nem rodá-lo fora do Visual Studio. Siga este guia para configurar o projeto CMake no Visual Studio.
O nome do gerador para o CMake é Xcode.
Supondo que o exercício atual seja bob e que estejamos na pasta do exercício:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Este exemplo gera os arquivos do XCode para que você possa abrir o projeto no XCode. Com o projeto aberto no XCode, talvez você precise adicionar outro target. Para um novo target, vá em File -> New -> Target no menu, OS X \ Application \ Command Line Tool -> Next, escolha C++ como linguagem e informe um nome para o target. Rode o código usando o target.
Se o seu terminal exibir o erro Xcode x.x not supported, é bem provável que o Xcode não esteja instalado na sua máquina ou que sua versão esteja desatualizada.
Baixe e instale o Xcode pela App Store ou por este link.
Erros parecidos com The CXX compiler identification is unknown provavelmente serão resolvidos seguindo as instruções para instalar o GCC ou adicionando outro target no Xcode, conforme o parágrafo acima.
O nome do gerador para o CMake é Unix Makefiles.
Supondo que o exercício atual seja bob e que estejamos na pasta do exercício:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
Neste exemplo, criamos arquivos vazios para a implementação antes de rodar o CMake, mas não criamos um diretório build vazio.
Isso porque o Exercism CLI usa o arquivo .exercism/metadata.json no diretório raiz para interpretar os casos de teste.
Basta digitar exercism test no diretório raiz para compilar os testes. Isso deve gerar erros de compilação.
Depois de corrigir os erros, rodar exercism test de novo vai compilar e executar os testes usando o Exercism CLI.