Pergunta

Para efeitos de testes de unidade Eu gostaria de criar um alvo iPhone projeto em Xcode que inclui todos os arquivos do aplicativo liberação, além de alguns arquivos adicionais contendo código útil para testes de unidade UI.

Eu posso fazer isso, duplicando o alvo pedido original; no entanto, o problema com isto é que cada vez que eu adicionar um novo arquivo de origem para o destino aplicativo, eu preciso também adicioná-lo ao alvo UnitTestUI. Não é uma grande coisa, apenas inconveniente para sempre lembrar de adicionar arquivos para ambas as metas.

Existe alguma maneira de configurar uma dependência de modo que cada arquivo adicionado ao alvo aplicativo original também é adicionado o alvo de teste de unidade auto?

Foi útil?

Solução

No Xcode, você pode criar metas que têm dependências diretas sobre o outro. Há uma série de metas de construção não-produtos que podem ajudar com isso no Outros categoria ao adicionar um novo alvo, dependendo de como simples ou complicado o seu set-up é. Criação de metas específicas para a execução de testes de unidade com uma dependência direta sobre o alvo principal do projeto é muito comum e está documentada pela Apple e de uma série de blogs.

Na sua situação, no entanto, você pode ter que fazer um monte de ajustes no alvo teste novo, UI, mas uma vez que é criado, será muito fácil de manter. Não sabendo a sua situação exata, é impossível dar-lhe uma resposta passo a passo, mas aqui estão as orientações gerais (tweak para adequar a sua situação):

  1. Criar a cópia de seu alvo original uma vez que a maioria das configurações será o mesmo.
  2. Selecione o novo alvo e abrir o inspetor (?I)
  3. Em Direto Dependências , clique no botão + e selecione o seu alvo principal.
  4. configurar o novo alvo como desejado, com documentação / fonte / regras extras ou o que quer.

Se você preferir arrastando e soltando as coisas ao redor, você também pode arrastar o seu alvo original (de acordo com as Metas divulgação triângulo) em seu novo alvo e ele será automaticamente configurar a dependência.

Agora, selecione seu alvo testar como o alvo ativo e será sempre construir com essas regras. Além disso, se você adicionar source / mudança no principal alvo, será adequadamente reconstruída ao construir o seu alvo de testes ... não há necessidade de lembrar de adicionar um arquivo de origem para o destino de teste também. Eu sugiro tomar algum tempo para ler as várias docs Xcode e jogar com um monte do alvo modelos disponíveis ... no longo prazo, ele realmente ajuda a tornar a utilização do produto muito mais eficiente. Há um monte de coisas interessantes que pode ser feito com bastante facilidade no Xcode se você sabe como, mesmo com projetos muito grandes ou complexos.

Outras dicas

Não, não é. Existe uma razão especial que você deseja todos os arquivos no seu alvo de teste de unidade? Isto incluiria main.m e todas as classes que você não está testando (como talvez suas aulas vista). Na verdade, se main.m está incluído na sua unidade de teste, então como seria o seu teste de unidade até mesmo executar corretamente?

Eu resolvi o problema através da construção de mais da minha candidatura como biblioteca estática, que está ligado a ambos os alvos de teste de aplicativos e de unidade.

Os alvos no meu olhar projeto como:

  • libMyApp
    • arquivos .m compilação
  • MyApp.app
    • libMyApp (dependência)
    • Fazer a ligação com a biblioteca: libMyApp.a
  • UITest.app
    • libMyApp (dependência)
    • Fazer a ligação com a biblioteca: libMyApp.a

Esta maneira que eu posso adicionar arquivos .m apenas para "libMyApp" alvo e tê-los disponíveis em ambos aplicativo e testes, e eles nem sequer tem que ser recompilados.

A única pegadinha é que a biblioteca estática não parece apoiar categorias Objective-C, por isso ainda tenho para adicioná-los a cada destino separadamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top