2012-04-12 12 views
9

मैं एपीआई का उपयोग कर एक जुनीट टेस्ट सूट का आह्वान करने की कोशिश कर रहा हूं। मुझे पता है कि आप का उपयोग कर परीक्षण कक्षाओं सूट सकते हैं:JUnit4 का उपयोग करके परीक्षण सूट को प्रोग्रामेटिक रूप से निष्पादित करने के लिए कैसे करें?

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    Test1.class, 
    Test2.class, ... 
}) 

लेकिन, पूरे सूट जावा एपीआई का उपयोग को गति प्रदान करने के लिए एक रास्ता उदाहरण के लिए JUnitCore उपयोग कर रहा है,?

उदाहरण के लिए, आप निम्नलिखित कोड का उपयोग करके एक परीक्षण को गति प्रदान कर सकते हैं:

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

अद्यतन:

एपीआई से ऐसा प्रतीत होता है कि सुइट वर्ग अपने आप में एक धावक है, इसलिए निम्नलिखित कोड काम करने के लिए लगता है:

Suite suite = new Suite(klass, new RunnerBuilder() { 
... // Implement methods 
}); 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(suite)); 

लेकिन मुझे यकीन है नहीं कर रहा हूँ अगर यह एक सिफारिश की दृष्टिकोण है या अगर कोई टी लिखने के लिए किसी भी नकारात्मक पक्ष यह है वह कोड से ऊपर है।

उत्तर

12

बस JUnitCore को सूट क्लास का नाम निर्दिष्ट करें:

Computer computer = new Computer(); 

JUnitCore jUnitCore = new JUnitCore(); 
jUnitCore.run(computer, MySuite.class); 
+0

धन्यवाद मैथ्यू! मैं निश्चित रूप से यह कोशिश करूँगा। इस बीच, क्या आपके पास मेरे अपडेट में कोड स्निपेट के लिए अनुशंसाएं हैं? – Neel

4

भी कर सकते हैं कि कमांड प्रॉम्प्ट का उपयोग कर

जावा org.junit.runner.JUnitCore परीक्षण वर्ग के नाम के रूप में

+5

मुझे नहीं लगता कि यह "प्रोग्रामेटिक" के रूप में योग्य है। – oers

+1

यदि आप इसे runtime.exec –

+2

या JunitCore.main (testClassName) का उपयोग करके कॉल करते हैं, तो यह होगा। –