OCunit

2011-01-13 11 views
7

के साथ आईओएस पर एसिंक्रोनस कोड का परीक्षण करना क्या किसी को मौजूदा पुस्तकालय के बारे में पता है जो ओसीयूनीट के साथ असीमित कोड का परीक्षण करने की अनुमति देता है? मैं GHAsyncTestCase जैसे कुछ के बारे में सोच रहा हूं लेकिन यह SenTestCase से बचाता है।OCunit

मैं पूछ रहा हूं क्योंकि अगर मुझे कोई नहीं मिलता है तो मैं ओसीयूनीट पर GHAsyncTestCase पोर्ट पर जा रहा हूं लेकिन मैं किसी और द्वारा पहले से किए गए काम को डुप्लिकेट नहीं करना चाहता हूं।

+0

मैं किसी से पहले ऐसा करने का पता नहीं है, लेकिन मैं उत्तर देना पूछने के लिए; आम तौर पर यूनिट परीक्षण चलाने के लिए उपयोग किए जाने वाले ढांचे में एसिंक्रोनस व्यवहार का परीक्षण करने की आवश्यकता क्यों होती है? क्या आप अपने व्यवहार के दो हिस्सों पर भरोसा नहीं करते? क्या आप उन्हें अलग से परीक्षण नहीं कर सकते? क्या आप वास्तव में एकीकरण परीक्षण लिख रहे हैं? – Jonah

+0

@ जोना, आप सही हैं कि यह वास्तव में उपयोगी है लेकिन कभी-कभी मैं पूरे नेटवर्क परत को नकल करने के लिए बहुत आलसी हूं। फिर यह वास्तव में स्थानीय सर्वर और इसके खिलाफ एकीकरण परीक्षण चलाने के लिए वास्तव में आकर्षक है। –

उत्तर

11

पायोत्र:

आप काम मैं Mimic साथ किया है में रुचि हो सकती, एक नेटवर्क छोटा करते है जो आप एक उच्च स्तर पर अनुरोध ठूंठ और अपने ऑब्जेक्टिव-सी से इस्तेमाल किया जा सकता की सुविधा देता है रूबी में लिखा उपकरण आपूर्ति किए गए रैपर का उपयोग कर।

असीमित परीक्षण के संबंध में, कृपया AssertEventually नामक एक छोटी उपयोगिता पर एक नज़र डालें।

This example दोनों नकल और जोर से कार्रवाई में दिखाता है।

इसके अतिरिक्त, आप Kiwi पर देख सकते हैं - यह ओसीयूनीट के शीर्ष पर बनाया गया एक बहुत छोटा उद्देश्य-सी परीक्षण ढांचा है। क्योंकि यह अभिव्यक्ति का मूल्यांकन करने के बजाय नए परिणामों के लिए सूचक जाँच

id someObject = nil; 
[do SomethingThatFetchesSomeObjectAsynchronously]; 
[[theObject(&someObject) shouldEventually] equal:@"some result"]; 
+0

यह ऐसा कुछ है जिसे मैं ढूंढ रहा था। नकल काफी दिलचस्प लग रहा है मैं इसे देख लूंगा। धन्यवाद! –

+0

जोर से काम आसान लगता है, लेकिन लिंक मर चुका है। कोई मदद? – AndrewCr

+0

मैं किवी का उपयोग '-उल्डवेवेंटली' व्यवहार के साथ कर रहा हूं; यह जानकर कि यह आपकी हस्तशिल्प थी। धन्यवाद! –

7

AGAsyncTestHelperAssertEventually से कुछ भिन्न दृष्टिकोण लेता है: मैं हाल ही में एक है जो आप जैसी चीजों के बारे में की सुविधा देता है कीवी के लिए खत्म हो बंदरगाह मेरी AssertEventually व्यवहार करने के लिए पैच का योगदान दिया। AGAsyncTestHelper का उपयोग करने का एक फायदा यह है कि इसका उपयोग ब्लॉक, प्रतिनिधि-कॉलबैक और व्हाट्नॉट के लिए किया जा सकता है।

WAIT_WHILE(<expression_to_evaluate>, <max_duration>); 

सवाल

id someObject = nil; 
[self doSomethingThatFetchesSomeObjectAsynchronously]; 
WAIT_WHILE(self.someObject == nil, 1.0); 
संबंधित मुद्दे