2012-06-21 9 views
7

परिदृश्य यह है:अतिरिक्त लॉगिंग JBehave

हम JBehave और सेलेनियम का उपयोग कर रहे प्रणाली, एकीकरण और अंत के लिए परीक्षण समाप्त करने के लिए। मैं सत्यापित करने के लिए 20 मानों के साथ किसी पृष्ठ पर गणना के परिणामों की जांच कर रहा हूं। जुनीट आर्ट का उपयोग करके पूरा परीक्षण गलत मानों में से एक के पहले उदाहरण पर असफल हो जाएगा। मैं जो करना चाहता था वह यह था कि यदि कोई दावा विफलता पूरी हो जाती है तो परीक्षण निष्पादित करना जारी रहता है ताकि मैं कई परीक्षणों के बजाय एक परीक्षण चलाने में गलत सभी मानों को एकत्र कर सकूं।

यह मैं दावे को पकड़ने और एक लॉग फ़ाइल कुछ भी है कि सत्यापन में विफल करने के लिए लिख ऐसा करने के लिए। इसने मुझे कुछ मुद्दों के साथ छोड़ दिया है:

1) लॉग फ़ाइल जहां मैं सम्मिलन विफलताओं को लिखता हूं, में जेबीहेव स्टोरी या परिदृश्य का नाम नहीं होता है जो अपवाद होने पर चलाया जा रहा था।

2) JBehave कहानी या परिदृश्य होने 'उत्तीर्ण' के रूप में सूचीबद्ध किया गया है और मैं इसे के रूप में 'विफल' सूचीबद्ध होना चाहते हैं।

वहाँ किसी भी तरह से है कि मैं कहानी और परिदृश्य के नाम प्रवेश कर सकते हैं या तो अतिरिक्त लॉग फ़ाइल के लिए बाहर या JBehave लॉग फ़ाइल के लिए लिखा अतिरिक्त प्रवेश पाने के है?

मैं कैसे कहानी/परिदृश्य के रूप में विफल चिह्नित मिल सकता है?

JBehave विन्यास में मेरे पास है:

configuredEmbedder() 
    .embedderControls() 
    .doIgnoreFailureInStories(true) 
    .doIgnoreFailureInView(false) 
    .doVerboseFailures(true) 
    .useStoryTimeoutInSecs(appSet.getMaxRunningTime()); 

और

.useStoryReporterBuilder(
    new StoryReporterBuilder() 
    .withDefaultFormats() 
    .withViewResources(viewResources) 
    .withFormats(Format.HTML, Format.CONSOLE) 
    .withFailureTrace(true) 
    .withFailureTraceCompression(true) 
    .withRelativeDirectory("jbehave/" + appSet.getApplication()) 

उत्तर

11

हाँ, आप अपने खुद के StoryReporter बना सकते हैं:

public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter{ 
    private Log log = ... 

    @Override 
    public void successful(String step) { 
     log.info(">>successStep:" + step); 
    } 

    @Override 
    public void failed(String step, Throwable cause) { 
     log.error(">>error:" + step + ", reason:" + cause); 
    } 

    ... 
} 

और इस तरह इसे पंजीकृत:

.useStoryReporterBuilder(
    new StoryReporterBuilder() 
     .withReporters(new MyStoryReporter()) 
.. 
+0

धन्यवाद। वह वास्तव में उपयोगी था। –

+0

क्या आप लॉगजर बनाने के तरीके के बारे में अधिक जानकारी जोड़ सकते हैं। कृपया विस्तार से बताएं: निजी लॉग लॉग = ... – farheen

+0

यह निर्भर करेगा जो लॉगिंग ढांचे पर प्रयोग कर रहे हैं। यदि आप slf4j का उपयोग कर रहे हैं: 'लॉगर लॉग = LoggerFactory.getLogger (MyStoryReporter.class); '। मुख्य बिंदु यह उन कॉलबैक तरीकों आप एक sysout कर सकता है में कुछ भी हो सकता है कि, एक डेटाबेस या कुछ और – plasma147

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