/ / Adicionando testes de unidade Swift a um projeto Xcode de idioma misto - objetivo-c, xcode, swift, teste de unidade

Adicionando testes de unidade Swift a um projeto Xcode de idioma misto - objetivo-c, xcode, swift, teste de unidade

Como você configura testes de unidade para testar classes Swift adicionadas a um projeto somente do Objective-c?

Eu adicionei classes Swift ao meu projeto e sou capaz de trabalhar com eles em outros arquivos Swift e Objective-c, no entanto, eu sou incapaz de acessá-los de minhas classes de teste.

A declaração de importação que acredito ser correta é @testable import MyAppModuleName que é o que é adicionado à classe de teste de exemplo nos modelos do Xcode. O erro produzido por essa linha é Cannot import module being compiled. Este erro está no Xcode 7 usando o Swift 2.

Respostas:

5 para resposta № 1

Eu tive problemas semelhantes trabalhando em um espaço de trabalho com uma mistura de base de código Objective-C e Swift e queria escrever casos de teste de unidade para os meus arquivos Swift. Abaixo estão os passos que tomei para resolver o problema.

  • Eu defino "Ativar testabilidade" para "SIM" nas configurações de criação do projeto
  • Eu também defino "Define o Módulo" para "SIM" nas Configurações de Construção do meu projeto.
  • Para o arquivo .swift normal no meu projeto, digamos MyApp, Eu fui vou escrever casos de teste para, eu tenho ambos o principal "MyApp" e as "MyAppUnitTests"Alvos verificados em Associação alvo.

Eu selecionei meu (s) arquivo (s) de teste de unidade, declarou o "@testable import MyApp"no topo, abaixo do"import XCTest"e verifiquei o "MyAppUnitTests"sob a participação no Target. Limpo, construído e executado e tudo funcionou como charme. Espero que isto ajude.


3 para resposta № 2

Resposta fornecida por https://twitter.com/UINT_MIN

No meu caso, os dois destinos (o aplicativo e os testes) tinham o mesmo nome de módulo nas configurações de criação. Alterar o nome do módulo do destino de teste resolveu o problema.


1 para resposta № 3

@testable import é para quando você está tentando importar o código do seu módulo principal do seu destino de teste. Seu código de teste não deve ser um membro do seu destino de aplicativo - você deve ter um destino de teste separado. Usando testes unitários para detalhes.