Blog do Eduardo Costa Meu blog pessoal

8Mai/112

Teste unitário no iOS

Acho que finalmente consegui pegar o jeito de fazer testes unitários no iOS. Em Java, com o JUnit mais o NetBeans (e talvez o Maven), é super fácil, trivial, o tipo de coisa que faço sem problemas. No iOS, com o XCode, nem tanto.

O primeiro grande problema é saber como gerar testes unitários. Na Internet, você vai encontrar um monte de idéias mirabolantes. Algumas boas, outras, nem tanto. Mas, para o arroz-com-feijão, geralmente são idéias complexas demais. No XCode 4, consegui fazer de um jeito ridículo de simples.

Primeiro, estou separando um target para cada suite de testes. Mando criar um novo target de testing bundle, adiciono somente as classes que vou testar, crio mock para as demais e pronto! Automaticamente, as classes incluídas vão usar as classes mock. Como tenho um target para cada suite, posso criar combinações específicas para cada teste.

A parte triste seria rodar cada target de teste individualmente. Mas, basta adicionar os targets ao "test scheme" do target principal e já era! Você pode rodar o teste (⌘-U) como se fosse um target de teste!

Quase tão simples quanto no NetBeans! Adorei!

Comentários (2) Trackbacks (0)
  1. É impressionante quão robusto um sistema se torna quanto tem teste unitários feitos sabiamente. Você tem muita tranqüilidade em alterar partes do código que já estão sendo utilizadas sem precisar ficar retestando tudo na mão.

    Sistemas sem teste unitário estão errados, então alguém diz:

    - O meu não tem e funciona super bem.

    Eu respondo:

    - Veremos até quando.

    • Pois é. Quem não tem teste unitário acha que o sistema funciona 100%. Mas esses 100% só envolve o que o usuário faz no cotidiano. Se considerar o que ele faz uma vez por mês ou uma vez por ano, esses 100% desce para uns 30% de software testado e em uso mais 70% de software “Gato de Schöringer“: só sabe se funciona ou está morto quando abrir a caixa. Só que pode ser pior: o software não dá erro, mas troca um A por D, mata a princesa, come o dragão e só no aniversário da princesa (ou se o dragão engravidar) alguém percebe o problema. Daí, como testar os outros 70%? Na raça? E se quiser fazer um major-refactoring? Vai testar 100% do sistema todo santo dia?


Leave a comment

(required)


*

Sem trackbacks