Estou trabalhando rapidamente no Xcode e, por padrão, ele cria um arquivo de teste que faz referência ao XCTest.
Quando defino a associação de destino para o meu projeto principal, ele causa este erro
Não é possível carregar o módulo subjacente para o XCTest
Se essa associação de destino não estiver definida, os testes serão executados corretamente e tudo funcionará bem.
PS: Eu sou novo no rápido e provavelmente é uma pergunta idiota (por favor, me esclareça)
Respostas:
O projeto principal não está vinculado à estrutura do XCUnit. Você deve criar um destino de teste separado para o seu projeto, se ainda não existir, e adicionar seus arquivos de origem de teste a esse destino.
Se você estiver trabalhando em um modelo de projeto iOS , selecione
iOS > Test > iOS Unit Testing Bundle
.Se você estiver trabalhando em um modelo de projeto do OS X , selecione
OS X > Test > OS X Unit Testing Bundle
.fonte
Verifique se o arquivo em questão não está no destino principal, mas apenas no destino de teste. Somente o destino do teste terá essa estrutura para importar.
fonte
Você acabou de adicionar seu arquivo / classe de testes ao destino principal e não ao destino por engano. Simples assim.
Solução:
1) Remova o arquivo de teste da lista "Fontes de compilação" na guia "Fases de construção" para o destino principal
2) Adicione o mesmo arquivo em "Compile Sources" na guia "Build Fhases" para o destino do teste
Ele deve resolver o problema
fonte
Eu recebo esse erro se criar um destino de estrutura dinâmica do macOS, vinculado a
XCTest.framework
(o destino é um destino de estrutura, não um destino de teste!).Nesse caso, o problema é resolvido adicionando
para "Configurações de compilação / caminhos de pesquisa da estrutura" do projeto.
fonte
$(PLATFORM_DIR)/Developer/Library/Frameworks
caso você tenha várias versões do Xcode instaladas com nomes diferentes (por exemplo, versões de lançamento e beta).Depois de muita solução de problemas e percorrer as páginas do Stack Overflow, como esta, consegui encontrar um detalhe que não foi mencionado nas outras páginas de solução de problemas do iOS Unit Test.
Se seu projeto usa CocoaPods, inclua seu destino de teste aninhado dentro do destino do aplicativo principal. Seu podfile pode não incluí-lo se você criou seu alvo de teste após a execução
pod init
. Seu podfile deve ser algo como isto:Lembre-se de salvar seu podfile e executar
pod install
depois de fazê-lo.Espero que ajude!
fonte
Talvez isso seja um pouco tarde, mas o que você precisa fazer é:
Clique em Arquivo> Novo> Destino> Pacote de Teste de Unidade iOS.
E então adicione seus testes lá. Isso funcionou para mim. O problema era que não selecionei criar testes de unidade quando criei meu projeto. Espero que isso ajude alguém.
fonte
Esse problema ocorre duas vezes no seu projeto.
1: Resposta:
Vá para o arquivo Clique em Arquivo.
Então você vê a primeira opção Novo Clique nele.
Depois de clicar nele, você verá alguma opção, clique em Alvo.
E então, na barra de pesquisa, procure o pacote de teste de unidade IOS e adicione problema.
se o compilador não der permissão para adicionar isso, tente o segundo método quando for fornecido abaixo.
2. Resposta Problema CocoaPod:
Vá para o produto Clique no produto.
Clique em limpar ou pressione cmd + k.
Problema resolvido.
fonte
Embora a resposta aceita resolva esse problema na maioria das vezes, há mais uma maneira de encontrar esse erro.
Se você já garantiu que:
Como apontado por @pwc @ nick-n e outros
ClassTest.swift
arquivo para associação de destino, garantindo que seja apenas anexado ao destino do Teste.ClassTest.swift
está visível no seu destino principal do aplicativo> Criar fontes> Compilar fontesAqui está o que mais você pode conferir:
no seu
.podspecs
arquivoVerifique se o seu
source_files
não inclui direta ou indiretamente o diretório de teste.por exemplo :
Observe que isso
Classes/**/*.{swift}
inclui tudo que substitui o fato de que o diretórioMyPodProjTests
deve ser excluído.Solução:
Nota: Este é um caso extremamente delicado e um erro completamente humano, mas achei que valeria a pena ressaltar.
fonte
s.source_files
. Obrigado!Certifique-se de que a associação de destino esteja marcada para todos os módulos quando a estrutura de teste for selecionada. Você pode visualizar a opção Associação ao Destino selecionando Exibir-> Utilitários-> Mostrar Inspetor de Arquivos
fonte
No meu caso, eu estava fazendo os testes para um pod privado, então no podspec era como:
Mas no Podfile eu esqueci de trazer a especificação do teste, como tal:
fonte
Fiz tudo o que precede, mas ainda não tinha permissão para acessar os métodos que queria testar. Porém, antes de escrever qualquer caso de teste, o projeto foi construído uma vez e os métodos estavam acessíveis para teste. Então tente e deixe-me saber se resolveu algum problema.
fonte
Eu tive o mesmo problema e a solução para mim foi:
Espero que esta resposta ajude.
PS: um último pensamento no meu destino de teste nas configurações de compilação, tive que verificar essas propriedades que não foram configuradas corretamente:
fonte
Assim como @Alfishe mencionado acima:
Você tem que remover os arquivos de teste de
Compiler Sources
sobBuild Phases
Como mostrado abaixo
fonte
Verifique a associação de destino da sua classe de teste.
fonte
O problema é que
Unit Testing Bundle
como um alvo, deve ser criado antecipadamente[Como adicionar]
fonte