2010-11-30 7 views
29

मैं कोड प्राप्त करने के लिए @BeforeTest का उपयोग करने की कोशिश कर रहा हूं ... प्रत्येक परीक्षण से पहले एक बार चलाएं।बेस क्लास पर टेस्टएनजी का @ बेयरटेस्ट केवल एक बार प्रतिबिंबित हो रहा है

public class TestBase { 
    @BeforeTest 
    public void before() { 
     System.out.println("BeforeTest"); 
    } 
} 

public class TestClass extends TestBase{ 
    @Test 
    public void test1(){} 

    @Test 
    public void test2(){} 
} 

"BeforeTest" केवल एक बार छपा है, दो बार नहीं:

यह मेरा कोड है। मैं क्या गलत कर रहा हूं?

उत्तर

41

@BeforeMethod का उपयोग करें, @BeforeTest नहीं।

@BeforeTest का अर्थ the documentation में समझाया गया है।

3

"पहले सेस्ट" केवल एक बार मुद्रित होता है, दो बार नहीं। मैं क्या गलत कर रहा हूं?

*** क्षमा करें। मैंने यह नहीं देखा है कि आपको @BeforeTest लिखा गया है, लेकिन आपके उदाहरण में @BeforeTest लगभग @BeforeClass के बराबर है, और @BeforeClass का उपयोग करने के लिए बेहतर है, जब आपके पास अब परीक्षण कक्षाएं नहीं हैं।

@BeforeClass "एक ही कक्षा है कि अपने परीक्षण तरीकों, अलग ढंग से नहीं!

//Example 

package test; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.BeforeMethod; 
import org.testng.annotations.Test; 

public class Tests { 
private String bClass; 
private String bMethod1; 
private String bMethod2; 

@BeforeClass 
public void beforeClass() { 
    bClass = "BeforeClass was executed once for this class"; 
} 

@BeforeMethod 
public void beforeMetodTest1() { 
    bMethod1 = "It's before method for test1"; 
} 

@Test 
public void test1() { 
    System.out.println(bClass); 
    System.out.println(bMethod1); 
} 

@BeforeMethod 
public void beforeMethodTest2() { 
    bMethod2 = "It's before method for test2"; 
} 

@Test 
public void test2() { 
    System.out.println(bClass); 
    System.out.println(bMethod2); 
} 
} 

@BeforeClass एक बार अपने सभी परीक्षणों तरीकों से पहले इस वर्ग में मार डाला जाएगा, में घोषित किया जाना चाहिए। @BeforeMethod परीक्षा पद्धति से पहले मार डाला जाएगा , इससे पहले कि यह लिखा गया है।

@BeforeClass टेस्ट क्लास में केवल एक हो सकता है, अंतर में @BeforeMethod! (यदि यह कुछ @BeforeClass है, तो वे मोड़ से किए जाते हैं, लेकिन यह परीक्षण की सही संरचना नहीं है)

पी एस मेरे अंग्रेजी के लिए खेद है :)

2

documentation के अनुसार, @BeforeTest के साथ एनोटेटेड एक विधि को टैग के अंदर कक्षाओं से संबंधित किसी भी @Test विधि से पहले चलाया जाता है।

मेरे अनुभव से:

  • प्रत्येक @BeforeTest विधि केवल एक बार
  • आप कई @BeforeTest तरीकों है, तो चलाया जाता है, उनके निष्पादन के आदेश उन @BeforeTest विधि युक्त वर्ग के आदेश पर निर्भर करता है ।

आप एक साधारण उदाहरण स्थापित करके इसका परीक्षण कर सकते हैं।

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