Yanıtlar:
Ana hedefinizde Enable Testability
derleme seçeneğini Evet olarak ayarlamanız gerekir .
Aşağıdaki @earnshavian'ın açıklamasına göre, bu yalnızca Apple sürüm notlarına göre hata ayıklama yapılarında kullanılmalıdır: "Testability yapılarını etkinleştir ayarı yalnızca Hata Ayıklama yapılandırmanızda kullanılmalıdır, çünkü iç sembolleri dışa aktarmaya bağlı optimizasyonları yasaklar uygulama veya çerçeve " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
) ancak App Store'a sunulması gerekiyor? Eğer Enable Testability
sadece hata ayıklama oluşturmak içindir, bu çevrede yolu nedir nedir? Test kodumu serbest bırakmak için çıkarmam gerekir mi?
Benim durumumda test için (derleme Test
) ve ayrıca cocoapods
bağımlılık yöneticisi olarak özel bir yapılandırma yapılandırması kullandım
Podfile
Test edilebilirliği sağlamak için sonuna aşağıdaki satırları eklemek zorunda kaldım
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
Varsayılan olarak yalnızca derlemeler için cocoapods
ayarlanırENABLE_TESTABILITY
YES
Debug
Onay kutularınızı uygulama düzeniniz altında düzgün bir şekilde ayarladığınızdan emin olun. Sen GEREKEN seçeneğini kaldır Arşiv Build'a için test hedefleri.
Bunu yalnızca Xcode Profiler'ı çalıştırdıktan sonra yaşayanlar için: şema yönetiminizdeki profil oluşturma yapılandırmasını test edilebilirliği etkinleştirmiş olana geçirin - ve çoğu durumda hata ayıklanır:
Bunun nedeni büyük olasılıkla ana hedefinizin Enable Testability
ayarlanmış olmasıdır NO
. Sen bunu belirlesin YES
(testlerinizi çalıştırmak için kullanılır) ayıklama düzeni.
Carthage kullanıyorsanız, bu sorun, bir çerçeve @testable
düzeniyle oluşturulduğundan , çerçevelerin içe aktarılmasından kaynaklanabilir .
Çoğu zaman bu önekle çerçeveleri içe aktarmak kötü bir uygulamadır, böylece bundan kaçınabilirsiniz. Yapamıyorsanız Enable Testability
, çerçevelerin yayınlama şemasında bulunmalısınız . https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
Bitrise kullanarak test çalıştırırken bu hatayı almaya başladım.
Diğer kullanıcıların diyor aksine, bu değil başına Target
temelinde, ya başına Schema
temelinde, bu ise başına Configuration
temelinde. Kullandığınız Yapılandırma'daTarget
-> Build Settings
sekmesi -> ara testability
-> Etkinleştir'i seçin .
Apple'ın AppStore için değil, hata ayıklama için kullandığınız yapılandırmada bunu etkinleştirmeyi önerdiğini lütfen unutmayın.
Çerçeveyi test etmeye çalışıyorsanız:
Test hedefine gidin -> Derleme Aşaması -> Yeni kopya dosyaları oluşturma aşaması -> Çerçeveleri seç -> Özyinelemeli olarak kullanılan tüm çerçeveleri ekle
Herhangi bir şansınız varsa
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
O zaman, bunu yapmanın yolu budur.
# 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
Bu, Xcode 8'den önceki projelerimde olmadı, ancak Xcode 8'e yükselttikten sonra beni şaşırttı.
Burada gönderilen cevaplar sorunlarımı çözmedi. Benim için bu testleri gerekmediği için terk ettim. Test düğmelerinin işaretini kaldırın: