2012-06-07 12 views
11

मैं लॉग में एक प्रिंट प्रिंट करने में सक्षम होना चाहता हूं जिसके लिए इंटेलिज विचार दो ऑब्जेक्ट्स (स्ट्रिंग्स) की तुलना करने का एक अच्छा तरीका पेश करेगा। यह एक असफल JUnit ज़ोर द्वारा लॉग त्रुटि संदेश के लिए अपने आप होता है:स्वरूपण आउटपुट ताकि इंटेलिज आइडिया दो ग्रंथों के लिए भिन्नता दिखाता है

 
assertEquals("some\nString", "another\nString"); 

=> 
org.junit.ComparisonFailure: <Click to see difference> 
    at org.junit.Assert.assertEquals(Assert.java:123) 
    at org.junit.Assert.assertEquals(Assert.java:145) 
    at com.something.DummyTest.testDummy(DummyTest.java:89) 

< क्लिक करें देखने के लिए अंतर > प्रविष्टि वास्तव में IntelliJ विचार के उत्पादन में खिड़की में एक कड़ी के रूप में प्रदर्शित किया जाता है। जब आप लिंक पर क्लिक करते हैं, तो एक तुलना विंडो खुलती है जो दो मान दिखाती है (जैसे आप दो फाइलों की तुलना करेंगे)।

बस अपवाद फेंकना स्वीकार्य नहीं है क्योंकि मैं तुलना करने के लिए एकाधिक ऑब्जेक्ट्स लॉग करना चाहता हूं। मैंने पहले ही एक टेक्स्ट लॉगिंग करने का प्रयास किया है, लेकिन मैं दो ग्रंथों की तुलना करने के लिए विचार को मनाने में सक्षम नहीं था।

उत्तर

19

इंटेलिजे आईडीईए हार्डकोडेड नियमित अभिव्यक्ति का उपयोग कर रहा है। यदि पाठ पैटर्न से मेल खाता है, तो यह अंतर देखने के लिए क्लिक करने का सुझाव देगा।

पैटर्न है:

expected:<bla-blah> but was:<blah-blah-blah> 

आउटपुट assertEquals या assertThat के प्रारूप से मेल खाना चाहिए।

आईडीईए में कोड के चारों ओर सटीक पैटर्न कुछ बिखरे हुए हैं, लेकिन कुछ उदा। here

+2

मुझे लगता है कि दोनों मानों को भी उद्धरणों द्वारा प्रस्तुत किया जाना चाहिए। – yankee

+0

@ यंकी वास्तव में, रेगेक्स पैटर्न को देखते समय, यह आवश्यक नहीं लगता है। – sschuberth

+0

कोई उद्धरण आवश्यक नहीं है, लेकिन इसके बाद मुझे एक स्थान जोड़ना पड़ा: इसके लिए काम करना। तो: 'अपेक्षित: लेकिन था: ' –

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