2014-07-11 23 views
15

'da testler nasıl yürütülür? Gördüğüm kadarıyla Xcode, belirli bir TestCase'den sırayla, ancak paralel olarak farklı Test Noktalarından testler çalıştırıyor gibi görünüyor.Xcode 6 beta3

Tüm testlerin sıralı olarak çalışabilmesi için bir proje/hedef konfigüre edilebilir mi? Örneğin, bu, diğer testleri etkileyen yan etkilere sahip çeşitli entegrasyon testleri yürütmek için yararlı olacaktır. (örneğin, aynı veritabanı tablolarına erişim)

DÜZENLEME: bazı karışıklığı gidermek için: Testlerin birbiriyle etkileşmediğinden emin olmak için, belirli bir test dizisini zorlamaktan bahsetmiyorum.

Teşekkür

+4

Belki de, ancak genellikle test B'ye güvenmek için kötü bir fikir B testinden önce başarılı olacaktır. – trojanfoe

+0

Düzelteyim: A'yı çalıştırmadan önce A'nın çıkışını yeniden kullanmaktan bahsetmiyorum. A ve B'nin birbiriyle etkileşmediğinden emin olmaktan bahsediyorum (örneğin ortak bir veritabanı tablosu kullanıyorlar) –

+3

Anladım . Her test kendi kendine yeterli olmalı ve test ortamını çalıştırmadan önce istedikleri şekilde ayarlamalıdır. Bu onları daha esnek hale getirir ve bu alanda bir şey tamir ediyorsanız tekrar tekrar tek bir test yapabilirsiniz. – trojanfoe

cevap

0

bu sorunu çözer emin değilim, ama bir seri sıraya testleri koymak yönetmek olabilir? Bariyerlerin temizlenmesini beklemek için onları aynı anda çalıştırmanıza izin verir. Alternatif

https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/#//apple_ref/c/func/dispatch_barrier_async

func dispatch_barrier_async(_ queue: dispatch_queue_t, 
         _ block: dispatch_block_t) 

yapabilirsiniz kurulum birden bağlamlar ve sonrasında bunları birleştirmek.

1

Testler için tutarlı bir başlangıç ​​durumuna sahip olmak için nesnelerinize ihtiyacınız varsa, test sınıflarınızın setUp yöntemine çağrı eklemenizi öneririz. setUp, bir test sınıfındaki her testten önce çağrıldı.

Paketinizi belirli bir sırada çalıştırmak için ihtiyacınız varsa, birim sınamalarınız olmadığı ve entegrasyon testleri çalıştırdığınız anlaşılıyor. Alt düzey nesnelerini başlatmak için setUp'ı kullanmayı deneyebilirsiniz. Daha üst düzey bir sınıfın davranışlarıyla ilgileniyorsanız, alay deneyin. OCMock çerçevesi Objective-C için kullanılabilir.