public class JavaFile1 extends frameworkClass {
@BeforeClass(alwaysRun=true)
public void setup(){
setMailServer1();
//setMailServer2();
}
@Test(priority = 0, groups = { "webdriver", "UI","helloTest"})
public void test1(){}
@Test(priority = 1, groups = { "webdriver", "UI","helloTest"})
public void test2(){}
@Test(priority = 2, groups = { "webdriver", "UI","helloTest"})
public void test3(){}
@Test(priority = 3, groups = { "webdriver", "UI","helloTest"})
public void test4(){}
@Test(priority = 4, groups = { "webdriver", "UI","helloTest"})
public void test5(){}
}
public class JavaFile2 extends frameworkClass{
@Test(priority = 0, groups = { "webdriver", "UI","helloTest1"})
public void test1(){}
@Test(priority = 1, groups = { "webdriver", "UI","helloTest1"})
public void test2(){}
@Test(priority = 2, groups = { "webdriver", "UI","helloTest1"})
public void test3(){}
@Test(priority = 3, groups = { "webdriver", "UI","helloTest1"})
public void test4(){}
@Test(priority = 4, groups = { "webdriver", "UI","helloTest1"})
public void test5(){}
}
`मैं निम्नलिखित क्रम में 2 जावा फाइलों से टेस्टएनजी परीक्षण चलाने की कोशिश कर रहा हूं।
कॉन्फ़िगरेशन1 जावा फ़ाइल से सभी परीक्षण चलाएँ1 जावा फ़ाइल2 से सभी परीक्षण चलाएँ कॉन्फ़िगरेशन2 जावा फ़ाइल1 से परीक्षणों का एक ही सेट चलाएँ
कोड को डुप्लिकेट किए बिना, उपरोक्त क्रम में चलाने के लिए परीक्षणों को कैसे ट्विक करें? नोट: कक्षा 2 कक्षा 1 का विस्तार नहीं कर सकता क्योंकि यह पहले से ही किसी अन्य फ्रेमवर्क वर्ग का विस्तार कर रहा है
2 जवाब
यदि आप अपनी परीक्षा कक्षा को @Factory
से जोड़ते हैं तो आप ऐसा कर सकते हैं।
यहां बताया गया है कि आप इसे कैसे करते हैं [मैं टेस्टएनजी 7.0.0-beta7
का उपयोग कर रहा हूं जो इस उत्तर को पोस्ट करने के समय नवीनतम जारी किया गया संस्करण है]
- एक इंटरफ़ेस को परिभाषित करें जो
setup
औरteardown
को सारगर्भित करता है - (1) में परिभाषित इंटरफ़ेस के एक या अधिक कार्यान्वयन बनाएँ
- एक या एक से अधिक टेस्ट क्लास इंस्टेंस बनाने के लिए एक
@Factory
कार्यान्वयन का उपयोग करें जिसमें उनमें से प्रत्येक को (2) में परिभाषित प्रत्येक कार्यान्वयन के साथ इंजेक्ट किया जाता है।
यहाँ एक पूर्ण नमूना है।
इंटरफ़ेस जो सेटअप और टियरडाउन क्षमताओं को परिभाषित करता है
public interface ITestCaseConfiguration {
void setup();
void tearDown();
}
इंटरफ़ेस का कार्यान्वयन
public class VariantOne implements ITestCaseConfiguration {
@Override
public void setup() {
System.err.println("setup() from VariantOne");
}
@Override
public void tearDown() {
System.err.println("tearDown() from VariantOne");
}
}
public class VariantOne implements ITestCaseConfiguration {
@Override
public void setup() {
System.err.println("setup() from VariantOne");
}
@Override
public void tearDown() {
System.err.println("tearDown() from VariantOne");
}
}
यहां बताया गया है कि फैक्ट्री कैसी दिखेगी
import org.testng.annotations.Factory;
public class MyTestClassFactory {
@Factory
public static Object[] createTestClassInstances() {
return new Object[] {
new SampleTestClass(new VariantOne()), new SampleTestClass(new VariantTwo())
};
}
}
आप फ्रेमवर्क क्लास में अपनी @BeforClass विधि रख सकते हैं और इसे कॉन्फ़िगरेशन 1 और 2 के लिए चलाने के लिए इसे पैरामीटरकृत कर सकते हैं। मैं अनुमान लगा रहा हूं कि आपके setMailServer1() और setMailServer2() विधि डेटा के विभिन्न सेट को छोड़कर एक ही काम करती है।
कोड की तरह दिखेगा:
public class Frameworkclass
{
@Parameters({"data1","data2"})
@BeforeClass
public void setup(String data1, String data2)
{
setMailServer();
System.out.println(data1+" "+data2);
}
}
टेस्टक्लास1 :
public class JavaFile1 extends FrameworkClass
{
@Test(priority = 0, groups = { "webdriver", "UI","helloTest"})
public void test1(){}
@Test(priority = 1, groups = { "webdriver", "UI","helloTest"})
public void test2(){}
@Test(priority = 2, groups = { "webdriver", "UI","helloTest"})
public void test3(){}
@Test(priority = 3, groups = { "webdriver", "UI","helloTest"})
public void test4(){}
@Test(priority = 4, groups = { "webdriver", "UI","helloTest"})
public void test5(){}
}
टेस्टक्लास2 :
public class JavaFile2 extends FrameworkClass
{
@Test(priority = 0, groups = { "webdriver", "UI","helloTest1"})
public void test1(){}
@Test(priority = 1, groups = { "webdriver", "UI","helloTest1"})
public void test2(){}
@Test(priority = 2, groups = { "webdriver", "UI","helloTest1"})
public void test3(){}
@Test(priority = 3, groups = { "webdriver", "UI","helloTest1"})
public void test4(){}
@Test(priority = 4, groups = { "webdriver", "UI","helloTest1"})
public void test5(){}
}
सुइट फ़ाइल:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="testsuit" parallel="false" verbose="2">
<test name="test1" parallel="false" preserve-order="true">
<classes>
<class name="TestProject.test.JavaFile1"/>
<parameter name="data1" value="value1"/>
<parameter name="data2" value="value2"/>
</classes>
</test>
<test name="test2" parallel="false" preserve-order="true">
<classes>
<class name="TestProject.test.JavaFile2"/>
<parameter name="data1" value="value3"/>
<parameter name="data2" value="value4"/>
</classes>
</test>
</suite>
आउटपुट:
[RemoteTestNG] detected TestNG version 6.14.3
...
... TestNG 6.14.3 by Cédric Beust (cedric@beust.com)
...
value1 value2
PASSED: test1
PASSED: test2
PASSED: test3
PASSED: test4
PASSED: test5
===============================================
test1
Tests run: 5, Failures: 0, Skips: 0
===============================================
value3 value4
PASSED: test6
PASSED: test7
PASSED: test8
PASSED: test9
PASSED: test10
===============================================
test2
Tests run: 5, Failures: 0, Skips: 0
===============================================
===============================================
testsuit
Total tests run: 10, Failures: 0, Skips: 0
===============================================
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।