2009-03-31 9 views
11

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

मैं परिणाम निर्धारित पैरामीटर में आदेश निर्धारित करने की आंतरिक समस्या को समझता हूं लेकिन यदि संभव हो तो हमें इस सुविधा की आवश्यकता है।

किसी भी विचार?

एक आदर्श दुनिया में, मैं कुछ इस तरह कर सकता है:

@Test(dataprovider = "dataLoader") 
@Parameters("suiteParam") 
public void testMethod(String suiteParam, String fromDataParam) { 
... 
} 

उत्तर

8

अरे, यह थोड़ा भद्दा हो सकता है लेकिन तुम क्यों एक @BeforeClass विधि का उपयोग नहीं करते एक क्षेत्र पर स्थानीय रूप से suiteParam स्टोर करने के लिए इस तरह की टेस्ट क्लास की।

private String suiteParam; 

@BeforeClass 
@Parameter("suiteParam") 
public void init(String suiteParam) { 
    this.suiteParam = suiteParam; 
} 

इस तरह आप हमेशा की तरह अपने डेटा प्रदाताओं का उपयोग और अभी भी अपने सूट परम के लिए उपयोग किया जा सकता है।

2

हां, TestNG's dependency injection capabilies का उपयोग कर उपयोग करें। आप अपने डेटाप्रोवाइडर में सभी परिभाषित मानकों तक पहुंच सकते हैं।

@DataProvider(name = "usesParameter") 
public Object[][] provideTestParam(ITestContext context) { 
    String testParam = context.getCurrentXmlTest().getParameter("test_param"); 
    return new Object[][] {{ testParam }}; 
} 

इस तरह आप विन्यस्त और उत्पन्न एक dataProvider जो तब अपने परीक्षण के लिए प्रयोग किया जाता है में पैरामीटर एकत्र कर सकते हैं: इस test_param पैरामीटर की जरूरत होती कुछ उदाहरण dataProvider है। ITestContext क्लास के विवरण के लिए TestNG JavaDoc देखें।

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