Objective-C kodunu test etmenin en iyi yolu nedir?


330

Objective-C kodunu test etmek için hangi çerçeveler var? Apple Xcode ile güzel bir şekilde bütünleşen bir çerçeve istiyorum.


Bildiğim kadarıyla, bazı cevaplar modası geçmiş. Apple şimdi bu sorunu çözmenize yardımcı olan XCTest'e sahip. Çoğu cevabın güncellenmesi gerektiğini düşünüyorum.
Tatlım

Yanıtlar:


317

Xcode benzer XCTest içerir OCUnit , çerçeve test bir Objective-C ünitesi ve projenizin inşa sürecinin bir parçası olarak XCTest tabanlı birim testleri çalıştırmak için gereken desteği vardır. Xcode'un birim test desteği Xcode'a Genel Bakış: Birim Testlerini Kullanma bölümünde açıklanmaktadır .

Xcode 2 gün içinde, Xcode birim testi ile bazı ortak görevlerin nasıl gerçekleştirileceği hakkında bir dizi weblog yazısı yazdım:

XCTest yerine OCUnit kullanılmasına rağmen, kavramlar büyük ölçüde aynıdır.

Son olarak, Cocoa kullanıcı arayüzleri için testlerin nasıl yazılacağı hakkında da birkaç yazı yazdım; Kakao'nun yapılandırılma biçimi onu nispeten basit hale getirir, çünkü çoğu durumda bir olay döngüsünü veya bunun gibi bir şeyi döndürmeniz gerekmez.

Bu, yalnızca model düzeyindeki kodunuz için değil, aynı zamanda denetleyici düzeyindeki ve hatta görünüm düzeyindeki kodunuz için de test odaklı geliştirme yapılmasını mümkün kılar.


5
Peter Hosey, Aralık ayında CA Cocoaheads toplantısında Göl Ormanı'nda Kakao Birim Testi hakkında iyi bir sunum yaptı. İşte bir video: vimeo.com/2725498
Grant Limberg

1
Yaklaşık bir yıl önce iOS ürünlerine başladığımda OCUnit'in (benim için) ciddi bir dezavantajı olduğunu gördüm - simülatör veya cihazda çalıştıramadım. O zamandan beri değişmiş olabilir - kontrol etmedim, ancak GHUnit'i sadece bu nedenle kullanıyorum.
drekka

1
Bu konuda resmi Apple Developer videoları var mı? WWDC 2011 ve 2010'dan geçtim ama testler önemli olduğundan garip bir şey bulamadım evet?
Robert

4
Xcode Birim Test Kılavuzu bağlantı taşındı Xcode Unit Testing Kılavuzu
Steven Green

5
Xcode 5 şimdi XCTest içeriyor hala OCUnit içeriyor mu? Cevabınızı XCode 5 bilgileriyle güncelleyecek misiniz?
BrightIntelDusk

50

Gabriel Handford tarafından GHUnit göz atın :

"GHUnit'in hedefleri:

XCode içinde birim testleri gerçekleştirerek XCode Debugger'ı tam olarak kullanmanızı sağlar. Testlerinizi görselleştirmenize yardımcı olacak basit bir GUI. Yığın izlerini göster. Basit (veya değil) bir hedef kurulum ile bir çerçeve olarak (Kakao uygulamaları için) kurulabilir; veya iPhone projenize kolayca paketleyebilirsiniz. "


5
GHUnit için +1! İPhone geliştirmede yeniyim ve dürüstçe, OCUnit'in mutlak kabusu ve GTM'nin hafif migreni ile karşılaştırıldığında GHUnit'in çalıştığını ve hiçbir karışıklıkla (talimatlar mükemmel) çalıştığımı söyleyebilirim. GHUnit kullanılabilirlik ve kolaylık kazanır!
Tim Reddy

3
Bu cevabın ve beraberindeki yorumların bir süre önce yazıldığını unutmayın. Xcode'un şimdi OCUnit tabanlı testler için çok daha iyi desteği var, bu da testlerin ayarlanmasını ve hata ayıklayıcıda çalıştırılmasını kolaylaştırıyor.
Kristopher Johnson

1
Bu proje o zamandan beri kullanımdan kaldırıldı.
BigHeadCreations



12

Mac için Google Araç Kutusu (GTM) projesinin Apple'ın SenTestingKit çerçevesini (yani kendisi OCUnit tabanlı) genişlettiğini / artırdığını unutmayın. Proje sitesinde söyledikleri gibi:

GTM, standart SenTestingKit'te, iPhone'da UI birim testi, otomatik ciltleme birimi testi, günlük takibi ve birim testi yapmanın yanı sıra kodunuzun statik ve dinamik testini yapmanıza olanak tanıyan çeşitli geliştirmelere sahiptir.

Kullanıcı arayüzü testi hakkında aşağıdaki açıklamaya dikkat edin:

GTM, kullanıcı arayüzü birim testleri için kapsamlı desteğe sahiptir. Standart Cocoa / UIKit UI nesnelerinin neredeyse tümünün görüntüleme ve / veya dahili durumunun test edilmesini destekler ve bu desteği kendi UI nesnelerinize genişletmenizi kolaylaştırır.

Nasıl kullanılacağına ilişkin talimatlar için " Kod Doğrulama ve Birim Testi " sayfalarına bakın.


12

GHUnit'in Objective-C için en gelişmiş test çerçevesi olduğu sonucuna vardım. Ben yapmış toparlama blogumda çerçeveler test. Dağıtım (iphone, simülatör veya mac os native) ve iddia yetenekleri açısından en esnektir. GTM'ye dayandığı için, GTM'nin SenTestingKit'e göre tüm avantajlarını miras alır, ancak çok daha fazlasını ekler. Bir başka bonus da çok aktif bir şekilde sürdürülmesidir.

Ben bütünleştirmek için çaba gerçekleştirdik OCMock GHUnit içine, o inşaat büyük !. Kodu github'dan alabilirsiniz .


12

Bu eski bir sorudur farkındayım, ama xUnit tarzı testi (Test :: Unit, JSUnit, JUnit, vb) üzerinde BDD tarzı testi (RSpec Jasmine, vb) tercih ederseniz, o zaman kontrol düşünebilir Sedir . Cedar, BDD tarzı testi Objective-C'ye getiriyor, artık dil kapanışları destekliyor.

Cedar'ı Pivotal Labs'daki iOS projelerimiz için mutlu bir şekilde kullanıyoruz ve aktif olarak geliştirmeye çalışıyoruz. Her türlü görüş ve önerilerinizi cedar-discuss@googlegroups.com adresinden edinebilirsiniz.


10

Kodun hangi kısmının birim testlerle kapandığını ve hangilerinin olmadığını görmek için kapsama araçlarını kullanmanızı da öneririm. GCOV aracıyla temel hat ve şube kodu kapsamı oluşturulabilir . Güzel HTML kapsama raporları oluşturmak istiyorsanız, bunu yapan LCOV ve ZCOV vardır.









3

Specta , XCTest'in üstünde çalışan modern bir TDD (Test Odaklı Geliştirme) / BDD (Davranış Odaklı Geliştirme) çerçevesidir. İOS ve Mac OS X projeleri için birim testini destekler.


0

Umarım u her yöntemi test edebileceğiniz 'SenTestKit'i kullanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.