मैं slf4j का उपयोग कर रहा हूं और मैं यह सुनिश्चित करने के लिए इकाई को अपने कोड का परीक्षण करना चाहता हूं कि कुछ शर्तों के तहत चेतावनी/त्रुटि लॉग संदेश उत्पन्न हो जाएं। मैं बल्कि ये सख्त यूनिट परीक्षण होगा, इसलिए लॉग संदेश उत्पन्न होने के परीक्षण के लिए मैं फ़ाइल से लॉगिंग कॉन्फ़िगरेशन को खींचना नहीं चाहता हूं। मैं जिस मॉकिंग फ्रेमवर्क का उपयोग कर रहा हूं वह मॉकिटो है।यूनिट-टेस्ट एसएलएफ 4 जे लॉग संदेशों का सबसे अच्छा तरीका क्या है?
उत्तर
मुझे लगता है कि आप एक कस्टम एपेंडर के साथ अपनी समस्या का समाधान कर सकते हैं। एक परीक्षण एपेंडर बनाएं जो org.apache.log4j.Appender
लागू करता है, और अपने एपेंडर को log4j.properties
पर सेट करें और परीक्षण मामलों को निष्पादित करते समय लोड करें।
तो तुम वापस कि appender
से परीक्षण दोहन करने के लिए कॉल आप लॉग इन संदेशों
यदि आप कुछ कोड नमूने पेश कर सकते हैं तो इसकी बहुत सराहना की जाएगी। – kenshinji
@kenshinji एक उदाहरण यहां दिया गया है: https://stackoverflow.com/a/1828268/2521769 –
एसएलएफ 4 जे का मज़ाक उड़ाए जाने के बजाय आप को अपने स्वयं के तरीकों के परीक्षण के लिए की महत्वपूर्ण लॉगिंग कॉल कर सकते हैं, जिन्हें आप अधिक आसानी से नकल कर सकते हैं।
यदि आप वास्तव में SLF4J का नकल करना चाहते हैं, तो मैं शर्त लगाता हूं कि आप इसके लिए अपना स्वयं का प्रदाता बना सकते हैं जो आपको आपकी सेवा ऑब्जेक्ट्स में इंजेक्शन देने के बजाय एसएलएफ 4 जे पक्ष से नकली लॉगर की आपूर्ति करने की अनुमति देगा।
@Zsolt की तरह जांच कर सकते हैं, तो आप log4j Appender
नकली और Logger
पर सेट कर सकते हैं, तो Appender.doAppend()
के लिए कॉल की पुष्टि करें। यह आपको वास्तविक कोड को संशोधित किए बिना परीक्षण करने की अनुमति देता है।
एक विशिष्ट कार्यान्वयन (जैसे log4j) पर भरोसा किए बिना slf4j का परीक्षण करने के लिए, आप this SLF4J FAQ में वर्णित अनुसार अपना स्वयं का slf4j लॉगिंग कार्यान्वयन प्रदान कर सकते हैं। आपका कार्यान्वयन लॉग किए गए संदेशों को रिकॉर्ड कर सकता है और उसके बाद सत्यापन के लिए आपके यूनिट परीक्षणों से पूछताछ की जा सकती है।
slf4j-test पैकेज बिल्कुल ठीक है। यह एक इन-मेमोरी slf4j लॉगिंग कार्यान्वयन है जो लॉग संदेशों को पुनर्प्राप्त करने के तरीकों को प्रदान करता है।
SLF4J का एक बेहतर परीक्षण कार्यान्वयन कि समवर्ती परीक्षा निष्पादन के साथ एक वातावरण में वास्तव में अच्छी तरह काम करता है https://github.com/portingle/slf4jtesting
मैं slf4j लॉग परीक्षण पर कुछ चर्चा और मौजूदा परीक्षण की सीमाओं पर में chimed गए दृष्टिकोण जब यह बात आती है समवर्ती परीक्षण निष्पादन के लिए।
मैंने अपने शब्दों को कोड में डालने का फैसला किया और वह गिट रेपो परिणाम है।
उम्मीद है कि जल्द ही तीसरा उत्तर किसी ऐसे व्यक्ति से दिखाई देगा जिसमें SLF4j का बेहतर परीक्षण कार्यान्वयन हो ....;) – Adam
- 1. एसएलएफ 4 जे/लॉगबैक
- 2. क्या लॉग 4 जे
- 3. लॉगबैक/एसएलएफ 4 जे में मल्टीलाइन टेक्स्ट कैसे लॉग करें?
- 4. एसएलएफ 4 जे बनाम जेबॉस लॉगिंग
- 5. लॉग 4 जे स्विंग एपेंडर
- 6. java.util.logging हैंडलर का उपयोग कर syslog पर लॉग इन करने का सबसे आधुनिक तरीका क्या है?
- 7. त्रुटि संदेशों को संभालने का सबसे अच्छा तरीका
- 8. सी # परियोजना आयोजित करने का सबसे अच्छा तरीका क्या है?
- 9. क्या मैं एसएलएफ 4 जे में कस्टम स्तर जोड़ सकता हूं?
- 10. सबसे अच्छा तरीका है
- 11. क्या सबसे अच्छा तरीका है सब वर्कस्टेशन
- 12. सबसे अच्छा तरीका है?
- 13. सबसे अच्छा तरीका है
- 14. अपाचे में पोस्ट डेटा लॉग करने का सबसे अच्छा तरीका?
- 15. कतार के लिए संदेशों को प्रारूपित करने का सबसे अच्छा तरीका क्या है?
- 16. सबसे अच्छा तरीका है
- 17. सबसे अच्छा तरीका है
- 18. सबसे अच्छा तरीका है
- 19. जे 2 ईई सर्वर से COM इंटरफेस तक पहुंचने का सबसे अच्छा तरीका कौन सा है?
- 20. सबसे अच्छा तरीका है
- 21. सबसे अच्छा तरीका है
- 22. सी # में अपवाद बढ़ाने का सबसे अच्छा तरीका क्या है?
- 23. विंडोज़ में बेंचमार्क प्रोग्राम का सबसे अच्छा तरीका क्या है?
- 24. लॉगिंग करने का सबसे अच्छा तरीका क्या है?
- 25. गणित अभिव्यक्ति निष्पादित करने का सबसे अच्छा तरीका क्या है?
- 26. एक Grails अनुप्रयोग में लॉग 4 जे एपेंडर इंजेक्शन
- 27. सबसे अच्छा तरीका है, .NET
- 28. स्कैला/एसबीटी/एसएलएफ 4 जे परियोजना से कॉमन्स-लॉगिंग को कैसे बाहर निकालना है?
- 29. आलसी लोडिंग - सबसे अच्छा तरीका क्या है?
- 30. RedirectToAction का परीक्षण करने का सबसे अच्छा तरीका क्या है?
चूंकि एसएलएफ 4 जे अन्य लॉगिंग कार्यान्वयन के लिए सिर्फ "मुखौटा" है, इसलिए आप इकाई को स्वयं ही परीक्षण नहीं कर सकते हैं, आपको उस क्रियान्वयन को भी निर्दिष्ट करना होगा जिसका आप उपयोग कर रहे हैं। – darioo
@darioo - सच नहीं है। मैं परीक्षण से लॉगर में पास करने के लिए अपनी कक्षा में एक सेटर जोड़ सकता हूं, फिर लॉगर इंस्टेंस के एक मैक आउट में पास हो सकता हूं और सत्यापित कर सकता हूं कि उपयुक्त लॉग कॉल किए गए थे। मैं बस अपने लॉगर इंस्टेंस को गैर-फाइनल के परीक्षण और बनाने के लिए एक सेट विधि जोड़ने से अधिक सुरुचिपूर्ण समाधान प्राप्त करने की उम्मीद कर रहा था। –
एक तरफ, आम तौर पर उत्कृष्ट "बढ़ते ऑब्जेक्ट ओरिएंटेड सॉफ्टवेयर" पुस्तक में लॉगिंग के यूनिट परीक्षण पर एक अध्याय है। यह पूरी तरह से भरोसेमंद नहीं है, लेकिन यह निश्चित रूप से अच्छी तरह से विचार किया गया है, और पढ़ने के लायक है (http://www.amazon.co.uk/Growing-Object-Oriented-Software-Guided-Signature/dp/0321503627/ref=sr_1_1 ? यानी = यूटीएफ 8 और एस = किताबें और qid = 1294688741 और sr = 8-1) – skaffman