वहाँ एक jUnit NUnit के समानांतर है CollectionAssert
?
वहाँ एक jUnit NUnit के समानांतर है CollectionAssert
?
जवाबों:
4.4 का उपयोग करते हुए आप हैमरेस्ट कोड के assertThat()
साथ एक साथ उपयोग कर सकते हैं (चिंता न करें, यह संग्रह के साथ काम करने वाले लोगों सहित जटिल आत्म-वर्णन करने वाले मुखर.jar
का उत्पादन करने के लिए, JUnit के साथ शिप नहीं किया गया है )
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.*;
import static org.hamcrest.CoreMatchers.*;
List<String> l = Arrays.asList("foo", "bar");
assertThat(l, hasItems("foo", "bar"));
assertThat(l, not(hasItem((String) null)));
assertThat(l, not(hasItems("bar", "quux")));
// check if two objects are equal with assertThat()
// the following three lines of code check the same thing.
// the first one is the "traditional" approach,
// the second one is the succinct version and the third one the verbose one
assertEquals(l, Arrays.asList("foo", "bar")));
assertThat(l, is(Arrays.asList("foo", "bar")));
assertThat(l, is(equalTo(Arrays.asList("foo", "bar"))));
इस दृष्टिकोण का उपयोग करके आप स्वचालित रूप से मुखर का एक अच्छा विवरण प्राप्त करेंगे जब यह विफल हो जाता है।
FEST धाराप्रवाह अभिकथनों पर एक नज़र डालें। IMHO वे हैमरेस्ट (और समान रूप से शक्तिशाली, एक्स्टेंसिबल आदि) की तुलना में उपयोग करने के लिए अधिक सुविधाजनक हैं और फ्लुपी इंटरफ़ेस के लिए बेहतर आईडीई समर्थन है। Https://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions देखें
Joachim Sauer का समाधान अच्छा है, लेकिन यह काम नहीं करता है यदि आपके पास पहले से ही अपेक्षाओं की एक सरणी है जिसे आप सत्यापित करना चाहते हैं कि आप अपने परिणाम में हैं। यह तब हो सकता है जब आप पहले से ही अपने परीक्षणों में उत्पन्न या निरंतर अपेक्षा रखते हैं, जिसके परिणामस्वरूप आप तुलना करना चाहते हैं, या शायद आपके पास कई अपेक्षाएं हैं जो आप परिणाम में विलय होने की उम्मीद करते हैं। इसलिए माचिस का उपयोग करने के बजाय आप केवल List::containsAll
और assertTrue
उदाहरण के लिए उपयोग कर सकते हैं :
@Test
public void testMerge() {
final List<String> expected1 = ImmutableList.of("a", "b", "c");
final List<String> expected2 = ImmutableList.of("x", "y", "z");
final List<String> result = someMethodToTest();
assertThat(result, hasItems(expected1)); // COMPILE ERROR; DOES NOT WORK
assertThat(result, hasItems(expected2)); // COMPILE ERROR; DOES NOT WORK
assertTrue(result.containsAll(expected1)); // works~ but has less fancy
assertTrue(result.containsAll(expected2)); // works~ but has less fancy
}
hasItems(expected1.toArray(new String[expected1.size()]))
। यह आपको बेहतर विफलता संदेश देगा।