Qual é a melhor maneira de testar o código Objective-C?

Quais estruturas existem para testar o código Objective-C? Eu gostaria de um framework que se integre bem com o Xcode.

O Xcode inclui o XCTest, que é semelhante ao OCUnit , uma estrutura de teste de unidade Objective-C, e tem suporte total para executar testes de unidade baseados no XCTest como parte do processo de criação do seu projeto. O suporte ao teste de unidade do Xcode é descrito na Visão Geral do Xcode: Usando Testes Unitários .

De volta ao Xcode 2 dias, eu escrevi uma série de posts do blog sobre como executar algumas tarefas comuns com o teste de unidade do Xcode:

  • Testes unitários de estruturas de cacau
  • Depuração de testes de unidade de estrutura do Cocoa
  • Aplicações unitárias de cacau
  • Depurando testes unitários de aplicativos Cocoa

Apesar de usar o OCUnit em vez do XCTest, os conceitos são basicamente os mesmos.

Finalmente, também escrevi alguns posts sobre como escrever testes para interfaces de usuário do Cocoa; A maneira como o Cocoa é estruturado o torna relativamente simples, porque você não precisa girar um loop de events ou algo assim na maioria dos casos.

  • Confie mas verifique.
  • Teste de unidade Interfaces de usuário de cacau: ação-alvo
  • Teste de unidade Interfaces de usuário de cacau: vinculações de cacau

Isso possibilita o desenvolvimento orientado a testes, não apenas para o código em nível de modelo, mas também para o código em nível de controlador e até mesmo em nível de exibição.

Confira GHUnit por Gabriel Handford:

“Os objectives do GHUnit são:

Executa testes unitários no XCode, permitindo que você utilize totalmente o Depurador XCode. Uma interface gráfica simples para ajudá-lo a visualizar seus testes. Mostrar rastreios de pilha. Ser instalável como uma estrutura (para aplicativos Cocoa) com uma configuração de destino simples (ou não); ou fácil de empacotar no seu projeto do iPhone. ”

Comecei a usar o equipamento de testes da checkbox de ferramentas do Google para o iPhone, e está funcionando muito bem para mim.

google-toolbox-for-mac

Confira o OCUnit . A rede de desenvolvedores da Apple tem uma ótima introdução .

Observe que o projeto do Google Toolbox para Mac (GTM) simplesmente amplia / amplia o framework SenTestingKit da Apple (que é, ele mesmo, baseado no OCUnit). Como dizem no site do projeto:

O GTM tem vários aprimoramentos no SenTestingKit padrão, permitindo que você faça testes unitários da interface do usuário, teste de unidade de binding automatizada, rastreamento de log e testes de unidade no iPhone, bem como ferramentas para testes estáticos e dynamics de seu código.

Observe o seguinte comentário sobre o teste da interface do usuário:

O GTM possui amplo suporte para testes de unidade de interface do usuário. Ele suporta o teste tanto da imagem e / ou estado interno de quase todos os objects de interface do usuário Cocoa / UIKit padrão, e torna mais fácil para você estender esse suporte para seus próprios objects de interface do usuário.

Consulte a página ” Verificação de código e teste de unidade ” para obter instruções sobre como usá-lo.

Cheguei à conclusão de que o GHUnit é o framework de testes mais avançado para o Objective-C. Eu fiz um resumo de estruturas de teste no meu blog. É o mais flexível em termos de implantação (iphone, simulador ou mac os nativo) e afirma resources. Como é baseado no GTM, ele herda todas as vantagens do GTM sobre o SenTestingKit, mas também adiciona muito mais. Outro bônus é que está sendo mantido muito ativamente.

Eu fiz um esforço para integrar o OCMock no GHUnit, ele funciona muito bem !. Você pode obter o código no github .

Eu percebo que esta é uma pergunta antiga, mas se você preferir testar no estilo do BDD (rspec, Jasmine, etc.) sobre testes no estilo xUnit (Test :: Unit, JSUnit, JUnit, etc.), então você pode verificar o Cedar . Cedar traz o teste de estilo BDD para Objective-C, agora que a linguagem suporta closures.

Estamos felizes em usar o Cedar para nossos projetos iOS no Pivotal Labs e estamos trabalhando ativamente para melhorá-lo. Qualquer feedback ou sugestão são bem-vindos em cedar-discuss@googlegroups.com

Eu também recomendaria o uso de ferramentas de cobertura para ver qual parte do código é coberta com testes de unidade e quais não são. A cobertura básica de código de linha e filial pode ser gerada com a ferramenta GCOV . Se você quer gerar bons relatórios de cobertura HTML, há LCOV e ZCOV que fazem exatamente isso.

Eu recomendo gh-unit, ele tem uma boa interface gráfica para resultados de testes.

http://github.com/gabriel/gh-unit/tree/master

O suporte a Testes Unitários incluído no xcode (por sua configuração simples) combinado com o ocrunner (para alguma bondade de Autotest / Growl) é atualmente a minha configuração favorita de Teste de Unidade Obj-C.

aqui é um monte deles

List_of_unit_testing_frameworks em Objective-C

Sen: te (o criador da estrutura de testes incluída no Xcode) explica como usar o OCUnit com um projeto do iPhone: simple-iphone-ipad-unit-test .

Matt Gallagher da Cocoa with Love tem um artigo muito bom sobre testes unitários.

Eu sugiro olhar para Kiwi, uma estrutura de teste de código aberto BDD para iOS: Kiwi

Confira a WIKI do projeto para iniciar ou obter o livro de Daniel Steinberg “Test Driving iOS Development com Kiwi” test-driving-ios-development

Eu uso o SimpleUnitTest funciona com bibliotecas do iPhone e iPad.

http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html

Ele vem com um modelo Xcode de teste de unidade para adicionar facilmente uma class de teste de unidade. Envolve o GTM.

Você pode, literalmente, soltá-lo em um projeto ativo e começar a adicionar testes de unidade dentro de 3 minutos (ou menos).

O Specta é um moderno framework TDD (Test Driven Development) / BDD (Behavior Driven Development) que é executado em cima do XCTest. Suporta testes unitários para projetos iOS e Mac OS X.

Espero que vc possa usar o ‘SenTestKit’, do qual vc pode testar todo e qualquer método.