TestNG - निर्भरता परीक्षण

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

TestNG आपको निर्भरता को या तो निर्दिष्ट करने की अनुमति देता है -

  • विशेषता का उपयोग करता है @Test एनोटेशन, या में ORMMethods।

  • विशेषता का उपयोग करते हुए @ वॉयस एनोटेशन में निर्भर करता है।

उदाहरण का उपयोग करता है निर्भरऑनमेथोड्स

एक क्लास बनाएँ

परीक्षण करने के लिए एक जावा वर्ग बनाएँ, कहते हैं, MessageUtil.java में C:\>TestNG_WORKSPACE

public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }
}

टेस्ट केस क्लास बनाएं

  • एक जावा परीक्षण वर्ग बनाएं, कहते हैं, निर्भरता परीक्षण UAnotnot.java।

  • परीक्षण विधियाँ जोड़ें, TestPrintMessage () और testSalutationMessage (), और initEnvironmentTest (), अपने परीक्षण वर्ग में।

  • विशेषता जोड़ें dependsOnMethods = {"initEnvironmentTest"} के @ सबसे बड़े एनोटेशन के लिए testSalutationMessage() तरीका।

एक जावा वर्ग फ़ाइल नाम बनाएँ DependencyTestUsingAnnotation.java में C:\>TestNG_WORKSPACE

import org.testng.Assert;
import org.testng.annotations.Test;

public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Manisha";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(dependsOnMethods = { "initEnvironmentTest" })
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test
   public void initEnvironmentTest() {
      System.out.println("This is initEnvironmentTest");
   }
}

Testng.xml बनाएँ

में testng.xml बनाएँ C:\>TestNG_WORKSPACE परीक्षण मामले को निष्पादित करने के लिए।

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

मैसेज यूटिल का संकलन करें, टेस्ट केस क्लासेस जेवाक का उपयोग करते हुए।

C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java

अब, testng.xml चलाएँ, जो inSEnvironmentTest () विधि के निष्पादन के बाद ही testSalutationMessage () विधि चलाएगा।

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

आउटपुट सत्यापित करें।

This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

उदाहरण का उपयोग करता है OnOnGroups

आपके पास ऐसे तरीके भी हो सकते हैं जो पूरे समूहों पर निर्भर करते हैं। इसे प्रदर्शित करने के लिए एक उदाहरण है।

एक क्लास बनाएँ

परीक्षण करने के लिए एक जावा वर्ग बनाएँ, कहते हैं, MessageUtil.java में C:\>TestNG_WORKSPACE

public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }
}

टेस्ट केस क्लास बनाएं

  • एक जावा परीक्षण वर्ग बनाएं, कहते हैं, निर्भरता परीक्षण UAnotnot.java।

  • परीक्षण विधियाँ जोड़ें, TestPrintMessage () testSalutationMessage (), और initEnvironmentTest () को अपने परीक्षण वर्ग में जोड़ें, और उन्हें समूह "init" में जोड़ें।

  • विशेषता जोड़ें dependsOnMethods = {"init.*"} के @ सबसे बड़े एनोटेशन के लिए testSalutationMessage() तरीका।

नाम से एक जावा वर्ग फ़ाइल बनाएँ DependencyTestUsingAnnotation.java में C:\>TestNG_WORKSPACE

import org.testng.Assert;
import org.testng.annotations.Test;

public class DependencyTestUsingAnnotation {
   String message = "Manisha";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(groups = { "init" })
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Manisha";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(dependsOnGroups = { "init.*" })
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test(groups = { "init" })
   public void initEnvironmentTest() {
      System.out.println("This is initEnvironmentTest");
   }
}

इस उदाहरण में, testSalutationMessage () को किसी भी समूह के आधार पर घोषित किया जाता है, जो नियमित अभिव्यक्ति "init। *" से मेल खाता है, जो गारंटी देता है कि तरीके testPrintMessage () और initEnvironmentTest () हमेशा testSalutationMessage () से पहले लागू किए जाएंगे।

यदि एक विधि पर निर्भर विफल रहता है, और आप इस पर एक कठिन निर्भरता है (हमेशा = गलत, जो कि डिफ़ॉल्ट है), इस पर निर्भर करने वाले तरीके विफल नहीं बल्कि SKIP के रूप में चिह्नित हैं। अंतिम रिपोर्ट में इस तरह के स्केप किए गए तरीकों को रिपोर्ट किया जाएगा (HTML में एक रंग में जो न तो लाल है और न ही हरा है), जो कि महत्वपूर्ण है क्योंकि स्किप किए गए तरीके आवश्यक रूप से विफल नहीं होते हैं।

Testng.xml बनाएँ

में testng.xml बनाएँ C:\>TestNG_WORKSPACE परीक्षण मामले को निष्पादित करने के लिए।

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

मैसेज यूटिल का संकलन करें, टेस्ट केस क्लासेस जेवाक का उपयोग करते हुए।

C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java

अब, testng.xml चलाएँ, जो inSEnvironmentTest () विधि के निष्पादन के बाद ही testSalutationMessage () विधि चलाएगा

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

आउटपुट सत्यापित करें।

This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

निर्भरऑनग्रुप्स बनाम निर्भरऑनमेथोड्स

  • समूहों का उपयोग करने पर, हम अब समस्याओं को दूर करने के लिए सामने नहीं आ रहे हैं। जब तक हम निर्भरऑनग्रुप्स या समूहों की विशेषताओं को संशोधित नहीं करते हैं, तब तक हमारे परीक्षण समुचित निर्भरता के साथ चलते रहेंगे।

  • जब भी निर्भरता ग्राफ में एक नई पद्धति को जोड़ने की आवश्यकता होती है, तो हमें केवल इसे सही समूह में रखना होगा और यह सुनिश्चित करना होगा कि यह सही समूह पर निर्भर करता है। हमें किसी अन्य विधि को संशोधित करने की आवश्यकता नहीं है।