Respostas:
No seu destino principal, você precisa definir a Enable Testability
opção de compilação como Sim.
Conforme o comentário de @earnshavian abaixo, isso deve ser usado apenas nas compilações de depuração, conforme as notas de versão da Apple: "A configuração de compilação Ativar testabilidade deve ser usada apenas na sua configuração de depuração, porque proíbe otimizações que dependem da não exportação de símbolos internos de o aplicativo ou estrutura " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
), mas precisam ser enviados à App Store? Se Enable Testability
for apenas para compilações de depuração, qual é o caminho para contornar isso? Preciso retirar meu código de teste para lançamento?
No meu caso, usei uma configuração de compilação personalizada para teste (chamada Test
) e também cocoapods
como gerenciador de dependências
Eu tive que adicionar as seguintes linhas ao final do meu Podfile
para permitir testabilidade
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Test'
config.build_settings['ENABLE_TESTABILITY'] = 'YES'
end
end
end
end
Por padrão cocoapods
sets ENABLE_TESTABILITY
a YES
apenas para Debug
constrói
Certifique-se de definir corretamente as caixas de seleção no seu esquema de aplicativo. Você deve desmarcar seus alvos de teste para a compilação de arquivos.
Para aqueles que estão enfrentando isso apenas ao executar o Xcode Profiler: alterne a configuração de criação de perfil no gerenciamento de esquemas para aquela com a testabilidade ativada - e que seria depurada na maioria dos casos:
Isso provavelmente ocorre porque seu destino principal Enable Testability
está definido como NO
. Você deve configurá-lo YES
no esquema de depuração (usado para executar seus testes).
Se você usa Carthage, esse problema pode ser causado pela importação de estruturas com @testable
, porque elas são criadas com um esquema de liberação.
Na maioria das vezes, é uma prática recomendada importar estruturas com esse prefixo, para que você possa evitá-lo. Se você não pode, deve fazê-lo Enable Testability
no esquema de liberação das estruturas. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
Comecei a receber esse erro ao executar testes usando o Bitrise.
Ao contrário de outros usuários, isso não é por Target
base, ou por Schema
base, é por Configuration
base. Selecione Target
-> Build Settings
guia -> procure testability
-> Habilite-o na configuração que você está usando .
Observe que a Apple recomenda habilitar isso na configuração que você está usando para depuração, não na AppStore.
Se você está tentando testar a estrutura:
Vá para o destino de teste -> Fase de construção -> Fase de criação de novos arquivos de cópia -> Escolha estruturas -> Adicionar todas as estruturas usadas recursivamente
Se por acaso você tiver
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
Então, este é o caminho para fazê-lo.
# generated_projects only returns results if the we run "pod install --clean-install"
# or install a pod for the first time
installer.generated_projects.each do |project|
project.build_configurations.each do |configuration|
configuration.build_settings["ENABLE_TESTABILITY"] = "YES"
end
end
Isso não ocorreu em meus projetos anteriores ao Xcode 8, mas depois da atualização para o Xcode 8, fiquei perplexo.
As respostas postadas aqui não resolveram meus problemas. Para mim, acabei de abandonar esses testes, pois não é necessário. Portanto, desmarque os botões de teste: