2011-05-04 9 views
6

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

आदर्श रूप से मुझे कुछ ऐसा उम्मीद है: -Djunit.runner = "com.example.foo"।

+0

तो मैंने कोड में देखा जहां रनविथ एनोटेशन संसाधित हो गया है और मुझे कुछ भी नहीं देखा गया जहां यह डिफ़ॉल्ट धावक को कहीं और खींच देगा। –

उत्तर

1

मुझे नहीं लगता कि यह वैश्विक रूप से परिभाषित करना संभव है, लेकिन यदि आपके मुख्य कार्य को लिखना एक विकल्प है, तो आप कोड के माध्यम से कुछ ऐसा कर सकते हैं। आप एक कस्टम RunnerBuilder बना सकते हैं और इसे अपने परीक्षण कक्षाओं के साथ Suite पर पास कर सकते हैं।

Class<?>[] testClasses = { TestFoo.class, TestBar.class, ... }; 
RunnerBuilder runnerBuilder = new RunnerBuilder() { 
    @Override 
    public Runner runnerForClass(Class<?> testClass) throws Throwable { 
     return new MyCustomRunner(testClass); 
    } 
}; 
new JUnitCore().run(new Suite(runnerBuilder, testClasses)); 

यह ग्रहण में से एक की तरह यूआई परीक्षण धावकों के साथ एकीकृत नहीं है, लेकिन कुछ स्वचालित परीक्षण परिदृश्यों के लिए यह एक विकल्प हो सकता है।

1

जुनीट वैश्विक स्तर पर धावक को स्थापित करने का समर्थन नहीं करता है। आप बेस क्लास में @RunWith को छिपा सकते हैं, लेकिन यह शायद आपकी स्थिति में मदद नहीं करेगा।

0

आप जो हासिल करना चाहते हैं उसके आधार पर, आप एक कस्टम RunListener का उपयोग करके वैश्विक स्तर पर परीक्षण व्यवहार को प्रभावित करने में सक्षम हो सकते हैं। यहां मैवेन सरेफायर प्लगइन के साथ इसे कॉन्फ़िगर करने का तरीका बताया गया है: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters

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