2010-10-06 13 views
6

से आईओएस यूआई घटकों का निर्माण करना मैं कुछ कोड के लिए यूनिट टेस्ट लिखने की कोशिश कर रहा हूं जो प्रोग्रामेटिक रूप से UIButtons बनाता है, लेकिन जब मैं इस कोड को परीक्षण से कॉल करता हूं, तो मुझे NullReferenceException मिलता है। डीबगर में कदम उठाने के साथ, ऐसा लगता है कि UIButton.FromType() शून्य लौटाता है।एनयूनीट परीक्षण कोड

यहाँ विधि मैं परीक्षण कर रहा हूँ है:

public UIButton makeButton (String title, Action<IWelcomeController> action) 
    { 
     UIButton button = UIButton.FromType (UIButtonType.RoundedRect); 
     // button is null here 
     button.SetTitle(title, UIControlState.Normal); 
     button.TouchUpInside += (sender, e) => { 
      action(controller); 
     }; 
     return button; 
    } 

और यहाँ परीक्षा पद्धति है:

[Test()] 
    public void TestMakeButtonTitle() 
    { 
     String title = "Elvis"; 
     UIButton button = GetFactory().makeButton(title, delegate(IWelcomeController w) {}); 
     Assert.AreEqual(title, button.Title(UIControlState.Normal)); 
    } 

मेरा अनुमान है कि वहाँ कुछ जादू मैं आदेश प्राप्त करने के लिए पर्यावरण के लिहाज से क्या करने की जरूरत है एक असली आवेदन के बाहर काम करने के लिए MonoTouch.UIKit। कोई संकेत? (और यदि यह संभव नहीं है, तो वैकल्पिक दृष्टिकोण सुझाए गए?)

उत्तर

1

इस बिंदु पर बहुत यकीन है कि मूल समस्या यह है कि यदि आप आईफोन पर या आईफोन सिम्युलेटर में नहीं चल रहे हैं, तो घटकों को तुरंत चालू करने के लिए आवश्यक देशी एपीआई को कॉल करने का कोई तरीका नहीं है।

हो सकता है कि किसी दिन कोई Monotouch के लिए NUnit संकलन और एक iOS परीक्षण धावक लिखेंगे ...

0

मुझे लगता है कि आपने अपने मोनोटच समाधान में एनयूनीट प्रोजेक्ट जोड़ा है और यह मोनोटच प्रोजेक्ट का संदर्भ लेता है।

ऐसा लगता है कि यह नहीं पता कि मोनोटच। डीएलएस कहां हैं, उन्हें अपने एनयूनीट के संदर्भ के रूप में जोड़ें। इन्हें यहां पाया जा सकता है:

~/Developer/Monotouch/usr/lib/mono/<version> 

इससे आपकी समस्या का समाधान होना चाहिए।

+0

यदि यह मामला था, तो मैं उम्मीद करता हूं कि कोड संकलित न हो, या जब मैं UIButton क्लास को लोड करने का प्रयास करता हूं, या FromType() को कॉल करता हूं तो उड़ाता हूं। मैं FromType() कॉल सफल होने की उम्मीद नहीं करता लेकिन शून्य वापस आऊंगा। –

0

हो सकता है कि किसी दिन कोई Monotouch के लिए NUnit संकलन और एक iOS परीक्षण धावक लिखेंगे ...

आईओएस के लिए ऐसा runner अब मौजूद है और यह नवीनतम मोनो टच 5.1.एक्स (बीटा) रिलीज के साथ भी जहाजों में है।

संबंधित मुद्दे