如何在运行时或以编程方式生成testng.xml

我们可能会遇到一些场景,我们必须在运行时或以编程方式创建testng.xml文件。所以,在这篇文章中,我们将学习如何在运行时创建一个testng.xml文件并执行它。

让我们首先创建一个我们想要以编程方式执行的测试用例

package Test;
 
import org.testng.Assert;
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public 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
===============================================

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 15:44:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 15:44:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 15:44:06       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 15:44:06       20 阅读

热门阅读

  1. Spirngboot JWT快速配置和使用

    2024-04-05 15:44:06       18 阅读
  2. 有关在运行时生成testng.xml的更多信息

    2024-04-05 15:44:06       18 阅读
  3. zookeeper之基本命令

    2024-04-05 15:44:06       17 阅读
  4. 蒟蒻求助帖

    2024-04-05 15:44:06       16 阅读
  5. 微信小程序 ---- 慕尚花坊 订单列表

    2024-04-05 15:44:06       17 阅读
  6. Android 关机充电动画卡住无反应,也不灭屏

    2024-04-05 15:44:06       19 阅读
  7. 【递推与递归】python例题详解

    2024-04-05 15:44:06       16 阅读
  8. @RequestBody与@RequestParam的区别

    2024-04-05 15:44:06       14 阅读
  9. EasyPOI导出动态表头

    2024-04-05 15:44:06       12 阅读
  10. Springboot集成hanlp快速入门demo

    2024-04-05 15:44:06       16 阅读
  11. 题目 1752: 对称矩阵

    2024-04-05 15:44:06       17 阅读