हमारे पास एक परीक्षण सूट है जो प्राथमिक रूप से हैमरेस्ट मैचर्स के साथ ज्यूनिट के दावे का उपयोग करता है। हमारी टीम में से एक ने AssertJ के साथ प्रयोग करना शुरू कर दिया और लोगों को इसके वाक्यविन्यास, लचीलेपन और घोषणा-पत्र से प्रभावित किया। वहाँ एक सुविधा है कि JUnit प्रदान करता है कि मैं AssertJ के लिए एक समान नहीं मिल सकता है: एक कस्टम मुखर विफलता संदेश जोड़ रहा है।
हम अक्सर उन वस्तुओं की तुलना कर रहे हैं जो मानव पठनीयता के लिए नहीं बनाई गई हैं और उनमें यादृच्छिक-प्रतीत होने वाले Ids या UUIDs होंगे और यह बताना असंभव है कि वे उस डेटा द्वारा होना चाहिए जो वे शामिल हैं। यह हमारे कोडबेस के लिए एक अपरिहार्य स्थिति है, दुख की बात है कि जिस उद्देश्य की पूर्ति के लिए यह आवश्यक है, उसे समझने के बिना अन्य सेवाओं के बीच डेटा मैप कर रहा है।
JUnit में, assertThatविधि परम के String reasonपहले एक पैरामीटर के साथ एक संस्करण प्रदान करती है Matcher<T>। यह एक छोटी डिबग स्ट्रिंग को जोड़ने के लिए तुच्छ बनाता है समस्या पर कुछ प्रकाश डालना, जैसे कि तुलना का मानव के लिए क्या मतलब होना चाहिए।
दूसरी ओर, AssertJ, एक अलग-अलग जेनरिकstatic assertThat तरीके प्रदान करता है जो इंटरफ़ेस Assert या इसके एक कार्यान्वयन वर्गों में से किसी एक को वापस करते हैं। यह इंटरफ़ेस विफलताओं के साथ शामिल होने के लिए एक कस्टम संदेश सेट करने का एक मानक तरीका प्रदान नहीं करता है।
क्या AssertJ API या इसके एक्सटेंशन में से कोई एक ऐसा तरीका है जिससे हम जो भी संदेश जोड़ना चाहते हैं, उसके लिए प्रत्येक कस्टम प्रकार के लिए एक कस्टम एस्टर क्लास बनाए बिना कोई एक्सटेंशन है?
withFailMessageपदार्थ का क्रम ; मुझे AssertJ पसंद है, लेकिन यह बेकार है।