पर लिखें मैं जावा में प्रोग्रामिंग प्रतियोगिता के लिए कुछ कोड लिख रहा हूं। कार्यक्रम में इनपुट stdin का उपयोग करके दिया जाता है और आउटपुट stdout पर है। आप स्टडीन/स्टडआउट पर काम करने वाले प्रोग्रामों का परीक्षण कैसे कर रहे हैं?स्टडीन से पढ़े गए परीक्षण जावा प्रोग्राम और stdout
के बाद से System.in प्रकार InputStream की है और System.out प्रकार PrintStream की है, मैं अपने कोड एक समारोह में इस प्रोटोटाइप के साथ लिखा है::
void printAverage(InputStream in, PrintStream out)
अब, मैं होता यह है कि मैं क्या सोच रहा हूँ है जूनिट का उपयोग करके इसका परीक्षण करना पसंद है। मैं एक स्ट्रिंग का उपयोग कर System.in को नकली करना चाहता हूं और स्ट्रिंग में आउटपुट प्राप्त करना चाहता हूं।
@Test
void testPrintAverage() {
String input="10 20 30";
String expectedOutput="20";
InputStream in = getInputStreamFromString(input);
PrintStream out = getPrintStreamForString();
printAverage(in, out);
assertEquals(expectedOutput, out.toString());
}
'सही' getInputStreamFromString() और getPrintStreamForString() लागू करने के लिए तरीका क्या है?
क्या मैं इसे और अधिक जटिल बनाने की आवश्यकता है?
शायद http://stackoverflow.com/questions/782178/how-do-i-convert-a-string-to-an-inputstream-in-java और http://stackoverflow.com/questions/216894/ get-a-outputstream-in-a-string मदद कर सकता है ... – tcovo
[नकली उपयोगकर्ता इनपुट के साथ जुनीट परीक्षण] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6415728/junit-testing-with-simulated-user -इनपुट) –