Saya sedang bekerja dengan cepat pada Xcode dan secara default itu membuat file uji yang merujuk XCTest.
Ketika saya menetapkan target keanggotaan ke proyek utama saya itu menyebabkan kesalahan ini
Tidak dapat memuat modul yang mendasari untuk XCTest
Jika keanggotaan target ini tidak disetel, tes akan berjalan dengan baik dan semuanya berfungsi dengan baik.
PS: Saya baru untuk cepat dan itu mungkin pertanyaan bodoh (tolong beri tahu saya)
Jawaban:
Proyek utama tidak terhubung dengan kerangka kerja XCUnit. Anda harus membuat target pengujian terpisah untuk proyek Anda, jika belum ada, dan menambahkan file sumber pengujian Anda ke target itu.
Jika Anda bekerja pada templat proyek iOS , pilih
iOS > Test > iOS Unit Testing Bundle
.Jika Anda bekerja pada templat proyek OS X , pilih
OS X > Test > OS X Unit Testing Bundle
.sumber
Periksa kembali apakah file yang dimaksud tidak berada di target utama melainkan hanya target tes. Hanya target pengujian yang akan memiliki kerangka kerja untuk mengimpor.
sumber
Anda baru saja menambahkan file tes / kelas Anda ke target utama dan bukan ke target tes karena kesalahan. Sederhana seperti itu.
Larutan:
1) Hapus file uji dari daftar "Kompilasi Sumber" pada tab "Bangun Fase" untuk target utama
2) Tambahkan file yang sama ke "Kompilasi Sumber" pada tab "Bangun Fase" untuk target pengujian
Itu harus menyelesaikan masalah
sumber
Saya mendapatkan kesalahan ini jika saya membuat target kerangka kerja macOS dinamis, yang terhubung ke
XCTest.framework
(target adalah target kerangka kerja, bukan target pengujian!).Dalam hal ini masalahnya diselesaikan dengan menambahkan
untuk memproyeksikan "Membangun Pengaturan / Jalur Pencarian Kerangka".
sumber
$(PLATFORM_DIR)/Developer/Library/Frameworks
jika Anda memiliki beberapa versi Xcode yang diinstal dengan nama yang berbeda (mis. Rilis dan versi beta).Setelah banyak pemecahan masalah dan memantul di sekitar halaman Stack Overflow seperti ini, saya berhasil menemukan satu detail yang tidak disebutkan pada halaman pemecahan masalah Tes Unit iOS lainnya.
Jika proyek Anda menggunakan CocoaPods, pastikan untuk memasukkan target pengujian Anda yang bersarang di dalam target aplikasi utama Anda. Podfile Anda mungkin tidak menyertakannya jika Anda membuat target pengujian setelah berjalan
pod init
. Podfile Anda akan terlihat seperti ini:Ingatlah untuk menyimpan podfile Anda dan jalankan
pod install
setelah melakukannya.Semoga ini bisa membantu!
sumber
Ini mungkin agak terlambat tetapi yang harus Anda lakukan adalah:
Klik File> Baru> Target> Bundel Pengujian Unit iOS.
Dan kemudian tambahkan tes Anda di sana. Ini berhasil untuk saya. Masalahnya adalah bahwa saya tidak memilih membuat unit test ketika saya membuat proyek saya. Semoga ini bisa membantu seseorang.
sumber
Masalah ini terjadi dua kali di proyek Anda.
1: Jawab:
Pergi ke File Klik pada File.
Kemudian Anda melihat opsi Pertama Klik Baru di atasnya.
Setelah Mengkliknya, Anda melihat Beberapa Opsi Klik pada Target.
Dan kemudian di Searchbar, Cari Unit Pengujian Bundel IOS dan Tambah Masalah terpecahkan.
jika Compiler tidak dapat memberi Anda izin untuk menambahkan ini, maka coba Metode Kedua saat diberikan Di Bawah Ini.
2. Jawab Masalah CocoaPod:
Pergi ke Produk Klik pada Produk.
Klik bersih atau tekan cmd + k.
Masalah terselesaikan.
sumber
Meskipun jawaban yang diterima memecahkan masalah ini sebagian besar kali, ada satu lagi cara Anda dapat menemukan kesalahan ini.
Jika Anda sudah memastikan bahwa:
Seperti yang ditunjukkan oleh @pwc @ nick-n dan lainnya
ClassTest.swift
file untuk keanggotaan sasaran dengan memastikan bahwa itu adalah hanya melekat pada target Testing.ClassTest.swift
adalah tidak terlihat di bawah Anda utama sasaran aplikasi> Sumber Build> Sumber KompilasiInilah yang bisa Anda periksa:
di Anda
.podspecs
filePastikan bahwa Anda
source_files
tidak secara langsung atau tidak langsung memasukkan direktori pengujian.sebagai contoh :
Catatan itu
Classes/**/*.{swift}
mencakup semua yang menimpa fakta bahwa direktoriMyPodProjTests
harus dikecualikan.Larutan:
Catatan: Ini adalah kasus yang sangat canggih dan sepenuhnya merupakan kesalahan manusia, tetapi saya pikir itu layak untuk ditunjukkan.
sumber
s.source_files
. Terima kasih!Pastikan Keanggotaan Target dicentang untuk semua modul saat kerangka uji dipilih. Anda dapat melihat opsi Target Keanggotaan dengan memilih View-> Utilities-> Show File Inspector
sumber
Dalam kasus saya, saya membuat tes untuk pod pribadi, jadi di podspec seperti:
Tetapi di Podfile saya lupa membawa spesifikasi pengujian, seperti:
sumber
Saya melakukan semua hal di atas, tetapi tetap saja saya tidak diizinkan mengakses metode yang ingin saya uji. Tetapi sebelum saya menulis test case apa pun membangun proyek sekali dan kemudian metode dapat diakses untuk menguji. Jadi cobalah dan beri tahu saya jika itu menyelesaikan masalah orang lain.
sumber
Saya memiliki masalah yang sama dan solusi bagi saya adalah:
Semoga jawaban ini akan membantu.
PS: satu pemikiran terakhir dalam target Tes saya dalam pengaturan bangunan saya harus memeriksa properti ini yang tidak dikonfigurasi dengan benar:
sumber
Sama seperti @Alfishe yang disebutkan di atas:
Anda harus menghapus file uji dari
Compiler Sources
bawahBuild Phases
Seperti yang ditunjukkan di bawah ini
sumber
Periksa Keanggotaan Target dari kelas Tes Anda.
sumber
Masalahnya adalah
Unit Testing Bundle
sebagai target harus dibuat sebelumnya[Cara menambahkannya]
sumber