2008-10-22 14 views
21

पर जो लिखा गया है उसका परीक्षण करना मैं एक XML पार्सिंग जावा क्लास के लिए जूनिट परीक्षण लिखने वाला हूं जो सीधे आउटपुटस्ट्रीम पर आउटपुट करता है। उदाहरण के लिए xmlWriter.writeString("foo"); XmlWriter उदाहरण के अंदर आउटपुटस्ट्रीम में लिखे जाने के लिए <aTag>foo</aTag> जैसे कुछ उत्पन्न करेगा। प्रश्न यह है कि इस व्यवहार का परीक्षण कैसे करें। एक समाधान निश्चित रूप से आउटपुटस्ट्रीम को फ़ाइलऑटपुटस्ट्रीम होने देना होगा और फिर लिखित फ़ाइल खोलकर परिणाम पढ़ना होगा, लेकिन यह बहुत ही सुरुचिपूर्ण नहीं है।जावा आउटपुटस्ट्रीम

उत्तर

23

ByteArrayOutputStream का उपयोग करें और फिर उस डेटा को toByteArray() का उपयोग करके प्राप्त करें। यह का परीक्षण नहीं करेगा यह धारा (एक समय में एक बाइट या एक बड़े बफर के रूप में) लिखता है लेकिन आम तौर पर आपको इसके बारे में परवाह नहीं करना चाहिए।

3

यदि आप एक लेखक को XmlWriter पास कर सकते हैं, तो मैं इसे StringWriter पास कर दूंगा। आप toString() का उपयोग कर StringWriter की सामग्री से पूछ सकते हैं।

यदि आपको OutputStream पास करना है, तो आप ByteArrayOutputStream पास कर सकते हैं और आप स्ट्रिंग के रूप में अपनी सामग्री प्राप्त करने के लिए toString() पर भी कॉल कर सकते हैं।

तो फिर तुम कुछ कोड कर सकते हैं जैसे:

public void testSomething() 
{ 
    Writer sw = new StringWriter(); 
    XmlWriter xw = new XmlWriter(sw); 
    ... 
    xw.writeString("foo"); 
    ... 
    assertEquals("...<aTag>foo</aTag>...", sw.toString()); 
} 
2

यह आसान है। @ जोन्स स्केट ने कहा:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
// pass the baos to be writed with "value", for this example 
byte[] byteArray = baos.toByteArray(); 
Assert.assertEquals("value", new String(byteArray)); 
संबंधित मुद्दे