2012-06-07 7 views
49

ऐसा लगता है कि हैमक्रिस्ट org.hamcrest.Matchers वर्ग org.hamcrest.CoreMatchers के समान है (हालांकि यह Matchers जैसा दिखता है)। मैं CoreMatchers का उपयोग क्यों करना चाहूंगा (इसके अलावा वर्ग की तरह थोड़ा छोटा है), और ये दो वर्ग इतने समान क्यों हैं?हैमक्रिस्ट-लाइब्रेरी मैचर्स और हैमक्रिस्ट-कोर कोरमैचर्स के बीच अंतर

उत्तर

37

हैमक्रिस्ट मैचर्स कई मॉड्यूल में विभाजित हैं। "कोर" में अन्य मैचर्स बनाने के लिए आवश्यक सबसे बुनियादी मैचर्स और अमूर्त कक्षाएं शामिल हैं। org.hamcrest.CoreMatchers में इन मैचर्स के लिए फैक्ट्री विधियां शामिल हैं। अन्य matchers "लाइब्रेरी" मॉड्यूल में हैं जो उनके द्वारा मिलान की जाने वाली वस्तुओं के प्रकार से समूहित होते हैं और वैकल्पिक होते हैं। org.hamcrest.Matchers में मैचर्स के दोनों सेट शामिल हैं।

आपको किस का उपयोग करना चाहिए? मैं किसी भी परेशानी के बाद बाद में सबकुछ आयात करता हूं। शायद संकलन के समय थोड़ा अधिक समय ले सकते हैं, लेकिन यह मेरे लिए कभी भी एक मुद्दा नहीं रहा है। मैं JUnit आयात के अलावा मुझे अपना इकाई परीक्षण के शीर्ष पर डाल:

import static org.hamcrest.MatcherAssert.*; 
import static org.hamcrest.Matchers.*; 

यह परीक्षण तरीकों में सबसे अच्छा पठनीयता देता है।

9

आप Mockito काफी उपयोग करते हैं (मैं कर के रूप में), तुम क्या कर किया जा सकता है:

import org.mockito.Mockito; 

या

static import org.mockito.Mockito.*; 

और के बाद से Mockito वर्ग Mockito के Matchers वर्ग फैली हुई है, तो आप समाप्त कर सकते हैं या तो Matchers कक्षाओं या उनके स्थिर तरीकों के बीच संघर्ष के साथ। CoreMatchers होने के कारण मुझे मॉकिटो के समान वर्ग में जुनीट-व्युत्पन्न कोरमैचर्स का उपयोग करने की अनुमति मिलती है, बिना उनके उपयोग के बिंदु पर उन्हें पूर्ण-योग्यता प्राप्त किए बिना।

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