本文主要是介绍如何在运行时或以编程方式生成testng.xml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们可能会遇到一些场景,我们必须在运行时或以编程方式创建testng.xml文件。所以,在这篇文章中,我们将学习如何在运行时创建一个testng.xml文件并执行它。
让我们首先创建一个我们想要以编程方式执行的测试用例
package Test;import org.testng.Assert;
import org.testng.annotations.Test;public class CodekruTest {@Testpublic void executeTest() {System.out.println("Excecuting the test");Assert.assertTrue(true);}
}
我们将创建一个testng.xml文件来帮助我们运行上面的测试用例。
<suite name="codekru"><test name="codekru"><classes><class name="Test.CodekruTest" /></classes></test>
</suite>
上面的XML文件将执行CodekruTest类下的每个测试用例。
产出-
Excecuting the test===============================================
codekru
Total tests run: 1, Failures: 0, Skips: 0
现在,如何以编程方式创建上述XML文件?
我们在org.testng包中有suite,test,class标签的等价物。
- <suite>它相当于XmlSuite类。
- <test>它相当于XmlTest类。
- <class>它相当于XmlClass类。
因此,记住这一点,让我们尝试创建与上面的XML文件等效的文件,它看起来像这样。
XmlSuite suite = new XmlSuite();
suite.setName("codekru"); // this means <suite name = "codekru">XmlTest test = new XmlTest(suite);
test.setName("codekru"); // this means <test name = "codekru">
List<XmlClass> classes = new ArrayList<XmlClass>(); // <classes>
classes.add(new XmlClass("Test.CodekruTest")); // this means <class name = "Test.CodekruTest">
test.setXmlClasses(classes);
要执行名为“codekru”的套件,我们必须创建一个TestNG对象,并向其传递一个套件列表,如下所示。
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG testng = new TestNG();
testng.setXmlSuites(suites);
testng.run();
整个类如下:
import java.util.ArrayList;
import java.util.List;import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;public class GenerateXmlAndExecuteItAtRuntime {public static void main(String[] args) {XmlSuite suite = new XmlSuite();suite.setName("codekru"); // this means <suite name = "codekru">XmlTest test = new XmlTest(suite);test.setName("codekru"); // this means <test name = "codekru">List<XmlClass> classes = new ArrayList<XmlClass>(); // <classes>classes.add(new XmlClass("Test.CodekruTest")); // this means <class name = "Test.CodekruTest">test.setXmlClasses(classes);List<XmlSuite> suites = new ArrayList<XmlSuite>();suites.add(suite);TestNG testng = new TestNG();testng.setXmlSuites(suites);testng.run();}
}
现在,像标准java应用程序一样运行main()方法,Test.CodekruTest下的所有测试用例也将执行。
产出-
Excecuting the test===============================================
codekru
Total tests run: 1, Failures: 0, Skips: 0
===============================================
这篇关于如何在运行时或以编程方式生成testng.xml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!