Testar no percurso de Objective-C

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


O Exercism só descarrega um ficheiro de testes. Vais ter de criar manualmente o cabeçalho e o ficheiro de código-fonte associados ao exercício. Vais ter de gerar um ficheiro de projeto do Xcode com o ficheiro de testes, o ficheiro de cabeçalho (.h) e o ficheiro de código-fonte (.m). Em alternativa, podes usar um utilitário de test runner descrito abaixo.

Criar o projeto no Xcode

  • Inicia o Xcode e cria um novo projeto.
  • Seleciona OS X > Application e, de seguida, Command Line Tool.
  • Clica em Next e dá-lhe um nome de projeto; aconselha-se que uses o ExerciseName.
  • Clica em Next e guarda o projeto no diretório de exercícios do exercism.
  • Agora que o projeto está criado, clica em Editor > Add Target.
  • Seleciona OS X > Test e escolhe OS X Unit Testing Bundle.
  • Dá ao target o nome ExerciseName Tests.
  • No painel esquerdo (conhecido como navigator), abre o Project navigator, expande a pasta ExerciseName Tests e abre o ficheiro ExerciseName_Tests.m.
  • Substitui o seu conteúdo pelo ficheiro de testes que recebeste do exercism.
  • Nesse ficheiro, substitui todas as ocorrências de "test_suite" por "ExerciseName_Tests".
  • Vai à biblioteca File Template no painel direito (ou usa CTRL+OPTION+CMD+1) e arrasta o template Cocoa Class para a pasta ExerciseName_Tests no Project navigator.
  • Dá-lhe o nome ExerciseName e seleciona ExerciseName Tests como target.
  • Vais agora ter dois ficheiros novos no teu diretório ExerciseName_Tests: ExerciseName.h e ExerciseName.m.
  • Clica no teu projeto no Project navigator.
  • Clica em ExerciseName Tests na lista de targets.
  • Seleciona Build Phases na navegação do editor.
  • Confirma que os teus dois ficheiros .m estão na lista Compile Sources.
  • Usa CMD+5 para ir para o Test navigator.
  • Clica com o botão direito no bundle chamado ExerciseName Tests e clica em Enable ExerciseName_Tests.
  • Corre os testes clicando no triângulo que aponta para a direita, que aparece quando passas o cursor sobre o bundle no Test navigator, ou usa CMD+U.

Os testes serão executados através do Xcode.

Nota: Se receberes o erro "No visible @interface for ExerciseName declares the selector ExerciseSelector,", seguiste os passos corretamente, mas ainda não escreveste nada no(s) teu(s) ficheiro(s) de cabeçalho/implementação. Depois de declarares o teu método no ficheiro .h e de o definires no ficheiro .m, os testes deverão dar-te erros mais úteis que te vão ajudar a completar o exercício. Lê este guia de introdução às classes e objetos de Objective-C para informação mais detalhada.

Um test runner

Uma alternativa a gerar o ficheiro de projeto manualmente é usar um utilitário de test runner escrito em ruby, objc, que te cria um ficheiro de projeto com o ficheiro de testes, o ficheiro de cabeçalho e o ficheiro de código-fonte.

$ gem install objc

Corre os testes com:

$ objc -x ExerciseName

(Repara na flag -x/--xcodebuild, que especifica a utilização do xcodebuild em vez do xctool. Este último não funciona com as versões mais recentes do Xcode.)

O utilitário objc usa o nome do exercício para encontrar o ficheiro de testes, ExerciseNameTest.m, o ficheiro de cabeçalho, ExerciseName.h, e o ficheiro de código-fonte ExerciseName.m. Os ficheiros são inseridos num projeto Xcode temporário e depois usa-se o xcodebuild para correr os testes do projeto.

Apesar de o objc fazer com que nunca tenhas de abrir o Xcode para completar estes exercícios, as mensagens de erro e o feedback na linha de comandos não são tão claros como na interface do Xcode.