2010-08-18 12 views
9

मैं मॉकिटो के साथ एक फ़ाइल मॉक ऑब्जेक्ट बना रहा हूं जिसका उपयोग एक नई फ़ाइल को स्टोर करने के लिए निर्देशिका के रूप में किया जाएगा।नकली फ़ाइल कक्षा और NullPointerException

Folder folder = Mockito.mock(File.class); 
File file = new Agent().createNewFile(folder, "fileName"); 

और मेरे एजेंट वर्ग के अंदर:

public File createNewFile(File folder, String filename){ 
    return new File(folder, "testfile"); 
} 

लेकिन जब createNewFile विधि के अंदर नई फ़ाइल बनाने मैं फ़ाइल के प्रारंभ ब्लॉक में एक NullPointerException हो रही है:

java.lang.NullPointerException at java.io.File.<init>(File.java:308) 

मैं ऐसा लगता है कि ऐसा होता है क्योंकि फ़ाइल में कोई खाली कन्स्ट्रक्टर नहीं है, इसलिए ऑब्जेक्ट का मज़ाक उड़ाते समय कुछ आंतरिक स्थिति शून्य हो जाती है।

क्या मैं File folder ऑब्जेक्ट का मज़ाक उड़ाते हुए गलत दृष्टिकोण ले रहा हूं? मेरा लक्ष्य नई फाइल बनाने से पहले कुछ बाधाओं की जांच करना है, लेकिन मैं फाइल सिस्टम पर मौजूदा वास्तविक फ़ोल्डर पर निर्भर नहीं होना चाहता हूं।

धन्यवाद।

+0

"मुझे लगता है कि ऐसा होता है क्योंकि फ़ाइल में कोई खाली कन्स्ट्रक्टर नहीं है" मैं मॉकिटो से परिचित नहीं हूं लेकिन यह मामला सबसे अधिक संभावना है। पैरामीटर के साथ एक कन्स्ट्रक्टर की अनुपस्थिति को समझ में आता है क्योंकि जावाडोक कहता है कि फ़ाइल "फ़ाइल और निर्देशिका पथनाम का एक सार प्रस्तुतिकरण" है। इस प्रकार, फ़ाइल को होस्ट सिस्टम पर किसी दिए गए फ़ाइल को इंगित करने की आवश्यकता होगी लेकिन यह "भौतिक रूप से" प्रतिनिधित्व नहीं करती है और केवल फ़ाइल I/O संचालन करने की अनुमति देती है। http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html –

उत्तर

8

आपको फ़ाइल के लिए getPath() के व्यवहार को परिभाषित करने की आवश्यकता है क्योंकि इसे फ़ाइल क्लास में आंतरिक रूप से कहा जाता है।

File folder = Mockito.mock(File.class); 
when(folder.getPath()).thenReturn("C:\temp\"); 
File file = new Agent().createNewFile(folder, "fileName"); 

यह केवल जब तक आप वास्तव में एक नई फ़ाइल बनाना नहीं है, लेकिन केवल नए फ़ाइल बुला काम करेगा:

आप के रूप में यह कर सकते हैं।

+0

मुझे विश्वास नहीं है कि यह समस्या हल करती है, कम से कम मेरे लिए नहीं, फ़ाइल में कोड (फ़ाइल अभिभावक, स्ट्रिंग बच्चे) कन्स्ट्रक्टर उड़ाता है क्योंकि पथ विशेषता शून्य है, "अगर (parent.path.equals (" ")) {" ... – Adam

+0

मुझे भी यह समझ में नहीं आता कि यह समस्या को कैसे हल करेगा। आखिरकार आप आगे नहीं आते हैं तो कोड 1 में एक उदाहरण के रूप में पोस्ट करें। नलपोइंटर को वहां फेंक दिया जाता है। – Steven

+1

सहमत हैं कि यह जेडीके 7u40 और https://bugs.openjdk.java.net/browse/JDK-8003992 के कारण प्रश्न का उत्तर नहीं देता है, जिसने FileInisvalid() को अपने ctor और file.isInvalid () File.pgetPath() के बजाय फ़ाइल.path सदस्य चर का उपयोग सीधे करता है। – jenglert

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