जावा 8 में दो Stream
उदाहरणों की तुलना करने का एक अच्छा तरीका क्या होगा और पता लगाएं कि उनके पास समान तत्व हैं, खासकर यूनिट परीक्षण के प्रयोजनों के लिए?जावा में दो स्ट्रीम की तुलना कैसे करें 8
क्या मैं अब मिल गया है है:
@Test
void testSomething() {
Stream<Integer> expected;
Stream<Integer> thingUnderTest;
// (...)
Assert.assertArrayEquals(expected.toArray(), thingUnderTest.toArray());
}
या वैकल्पिक रूप से:
Assert.assertEquals(
expected.collect(Collectors.toList()),
thingUnderTest.collect(Collectors.toList()));
लेकिन इसका मतलब है कि मैं दो संग्रह का निर्माण कर रहा हूँ और उन्हें त्यागकर। यह मेरी टेस्ट स्ट्रीम के आकार को देखते हुए एक प्रदर्शन मुद्दा नहीं है, लेकिन मैं सोच रहा हूं कि दो धाराओं की तुलना करने के लिए एक कैननिकल तरीका है या नहीं।
मैं बहुत यकीन है कि वहाँ एक संग्रह या सरणी के रूप में आप ऊपर किया है में धाराओं मजबूर बिना कोई रास्ता नहीं है हूँ। – joecoder
प्रत्येक को 'इटरेटर()' के लिए पूछें, और लॉकस्टेप में उन्हें पार करें। –
बीटीडब्ल्यू, यह स्ट्रीम के लिए परीक्षण ढांचे में आता है। हमने 18 ट्रैवर्सल मोड निर्दिष्ट किए हैं (और भी हैं, ये वे हैं जिन्हें हमने परीक्षण किया है) और "समान" धारा को सभी तरीकों से पार करते हैं, और तुलना करें कि परिणाम समान हैं (स्ट्रीम लाइब्रेरी अर्थशास्त्र द्वारा अनुमत मॉड्यूलो रीडरिंग्स।) उदाहरण के लिए देखें , http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/test/java/util/stream/bootlib/java/util/stream/StreamTestScenario.java। –