什么是TestNG以及如何创建testng.xml文件?

目录

什么是TestNG?

如何创建testng.xml文件

手动创建testng.xml

通过testng.xml运行整个包

通过testng.xml运行类

使用Eclipse创建testng.xml


本文将讨论TestNG以及如何通过执行testng.xml文件在TestNG中运行第一个测试用例。

什么是TestNG?

TestNG是一个受JUnit和NUnit启发的测试框架,但引入了一些新功能,使其更强大,更易于使用,例如:

  • 它提供了对注释的支持,这使得编写测试非常容易。
  • 测试我们的代码是否是多线程安全的。
  • 灵活的测试配置。
  • 支持并行测试。
  • 支持数据驱动测试(使用@DataProvider)。
  • 支持参数。
  • 它由各种工具和插件(Eclipse,IDEA,Maven等)支持。如果你想在Eclipse中配置TestNG插件,你可以阅读这篇文章;它肯定会帮助你在Eclipse中安装TestNG。

TestNG是一个开源测试框架,NG代表下一代,旨在简化从单元测试到集成测试的广泛测试需求。

如何创建testng.xml文件

xml是一个XML文件,包含测试用例的信息和配置。TestNG使用testng.xml文件来运行用例,我们将看到如何创建testng.xml来执行我们的测试用例。

在移动之前,让我们创建一个项目,通过testng.xml文件运行一个测试用例。

  • 创建一个maven项目(阅读本文以创建一个maven项目)
  • 在eclipse中安装TestNG(阅读本文以在eclipse中安装TestNG)

安装TestNG后,请确保在pom.xml文件中添加以下TestNG依赖项

<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.6.1</version>
    <scope>test</scope>
</dependency>

现在你的项目结构看起来像这样-

Project structure

注意:App.java和AppTest.java是maven创建的默认java文件。您可以根据需要选择保留或删除它们。我们将删除他们为我们的职位。

下面是添加TestNG maven依赖项后的pom.xml文件。当我们使用maven命令创建项目时,maven会自动添加JUnit依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.website.codekru</groupId>
    <artifactId>DemoProject</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>DemoProject</name>
    <url>http://maven.apache.org</url>
     
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.6.1</version>
        </dependency>
 
    </dependencies>
</project>

最后一件事是创建一个测试用例,我们可以通过testng.xml文件运行它。

我们将在“org.website.codekru”包中创建一个CodekruTest类。CodekruTest类将包含一个测试用例。

CodekruTest.java

package org.website.codekru;
 
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void test() {
        System.out.println("Executing first test case");
    }
 
}

@Test注释标记了一个测试用例,TestNG将只执行带有@Test注释的方法。

下面是更新后的项目结构。

Updated project structure

现在,我们将创建一个testng.xml文件来运行测试用例。

我们可以手动或使用IDE创建testng.xml文件。我们将涵盖两种方式-

  • 手动创建testng.xml
  • 使用Eclipse创建testng.xml

让我们一个一个来看。

手动创建testng.xml

这里我们将使用五个术语

  • 套件
  • 测试
  • 方法

还有其他术语,但我们将在这篇文章中只讨论上述术语。

下图显示了层次结构,suite在顶部,方法在底部。它们也将以相同的顺序写入testng.xml文件。

hierarchy while writing testng.xml file

  • TestNG中的suite由suite标记表示。
  • TestNG中的Test由test标记表示。
  • 包由package标记表示
  • 单个类由class标记表示。
  • TestNG中的方法由method标记表示。

标签也将遵循相同的层次结构。

我们可以省略一些标签,比如不强制提到package标签,因为每个标签都有一个用途,有时我们不需要标签。但是也有一些强制性的标签,比如suite和test。

现在,让我们运行我们的测试用例。我们可以用多种方式运行测试用例-

  • 我们可以运行包含测试用例的包。它将执行包内的所有测试用例。
  • 或者,我们可以运行包含测试用例的类。这将执行类中的所有测试用例。
  • 或者,我们可以运行特定的测试用例或测试方法。
通过testng.xml运行整个包

在项目的根目录下创建一个名为“testng.xml”的新文件(您可以为该文件命名任何名称,没有必要保持名称为testng.xml)

我们可以使用这些标记运行整个包>

如果我们还记得层次结构,suite标签将排在第一位,然后是test和package标签。

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
 
<suite name="codekru">
    <test name="codekruTest">
        <packages>
            <package name="org.website.codekru" />
        </packages>
    </test>
</suite>

  • 所有标记都有一个name属性,用于定义与特定标记对应的名称。我们可以保留套件和测试名称,但包名称应该是我们想要执行的真实的包名称或路径。
  • <packages标签将包含我们想要执行的包的列表。每个包都将使用带有name属性的package标记来提及。
  • 这里我们只有一个包,所以,我们把包的名称这样。

现在,运行这个XML文件。我们可以通过右键单击XML文件然后选择RunAsTestNGSuite来运行XML文件。

Running the XML file

这将运行testng.xml并执行包中的所有案例。因为我们只有一个测试用例,所以它将是这种情况,我们将在控制台上看到下面的输出。

Executing first test case

===============================================
codekru
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
通过testng.xml运行类

同样,我们也可以运行一个包含测试用例的类。这就需要以相同的顺序使用suite、test、classes和class标签。

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
 
<suite name="codekru">
    <test name="codekruTest">
        <classes>
            <class name="org.website.codekru.CodekruTest" />
        </classes>
    </test>
</suite>

这与我们对软件包所做的大致相同。

这里的类名应该以packageName.className的格式写入。我们的包名是

现在,让我们再次执行XML文件,我们将在控制台上打印以下输出。

Executing first test case

===============================================
codekru
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

我们还可以通过testng.xml文件运行特定的测试用例,我们在另一篇文章中介绍了这个主题。请阅读这篇文章,以获得更多的见解。

使用Eclipse创建testng.xml

我们还可以使用eclipse创建XML文件,因此不必手动创建它。

  • 右键单击要执行其测试用例的类或包。我们将单击类以执行其案例。
  • 然后选择TestNG Convert to TestNG。

Convert to TestNG

  • 点击“Convert to TestNG”后会打开一个弹出窗口。

testng.xml preview

  • 我们可以复制预览文本框中的内容并将其复制到我们的testng.xml文件中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="5" name="Test">
    <classes>
      <class name="org.website.codekru.CodekruTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

  • 我们可以运行XML文件,这将在类中运行测试用例。下面的输出将打印在控制台上。
Executing first test case

===============================================
Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324074.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt QGraphicsItem获取鼠标位置对应图像坐标

本次使用了QGraphicsView来加载图像&#xff0c;然后给其设置了一个QGraphicsScene场景&#xff0c;再给场景添加了一个自定义的QGraphicsItem&#xff0c;在其中重写了paint事件&#xff0c;用来重绘图像。 正常情况时&#xff0c;QGraphicsItem上图像的有效区域QRect大小和QG…

内网穿透[让你在家里也能榨干学校的服务器]Yep!

内网穿透 问题&#xff1a;什么是内网穿透&#xff0c;内网穿透的作用是什么&#xff1f; 前提&#xff01;&#xff01;&#xff01;&#xff01;你得拥有超级管理员的权限&#xff0c;比如root&#xff0c;不然后面的一切免提&#xff01; 应用场景如下&#xff1a;比如你…

复选框QCheckBox和分组框QGroupBox

1. 复选框&#xff1a;QCheckBox 实例化 //实例化 // QCheckBox* checkBox new QCheckBox("是否同意该条款",this);QCheckBox* checkBox new QCheckBox(this);1.1 代码实现 1.1.1 复选框的基本函数 复选框选中状态的参数 Qt::Unchecked //未选中状态 Qt::Part…

C++I/O流——(3)文件输入/输出(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 含泪播种的人一定能含笑收获&#xff…

Qt QSlider滑动条控件

文章目录 1 属性和方法1.1 值1.2 方向1.3 步长1.4 信号和槽 2 实例2.1 布局2.2 代码实现 QSlider是滑动条控件&#xff0c;滑动条可以在一个范围内拖动&#xff0c;并将其位置转换为整数 最常见的应用就是视频播放器中的进度条 1 属性和方法 QSlider继承自QAbstractSlider&…

Linux中文件名修改的多种方法

找一个不算漂亮的普通女孩&#xff0c;一起柴米油盐&#xff0c;一起日出日落&#xff0c;一起田间地头&#xff0c;一起春花冬雪&#xff01;要一个不算大的小房子&#xff0c;生两个健康可爱的宝宝&#xff0c;这样就很好。。。。。。 简介&#xff1a; 在Linux系统中&#x…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame&#xff0c;关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下&#xff1a; 游戏源码如下&#xff1a; import pygame import sy…

排序算法之八:计数排序

1.计数排序思想 计数排序&#xff0c;顾名思义就是计算数据的个数 计数排序又称非比较排序 思想&#xff1a;计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。 操作步骤&#xff1a; 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 计数…

freetos day1

作业&#xff1a;使用计数型信号量设计&#xff1a;生产者和消费者模型 总结今天学习的API函数&#xff0c;写出函数参数和返回值的意思&#xff0c;并且说明函数功能 1 2 3

【数据结构】C语言实现共享栈

共享栈的C语言实现 导言一、共享栈1.1 共享栈的初始化1.2 共享栈的判空1.3 共享栈的入栈1.3.1 空指针1.3.2 满栈1.3.3 入栈空间错误1.3.4 正常入栈1.3.5 小结 1.4 共享栈的查找1.5 共享栈的出栈1.6 共享栈的销毁 二、共享栈的实现演示结语 导言 大家好&#xff0c;很高兴又和大…

文件上传进阶绕过(二)4个技巧和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战&#xff1a;upl…

「会议推荐」食品饮料行业数字化、智能化转型升级高质量发展论坛

“2024第十二届国际生物发酵产品与技术装备展览会&#xff08;济南&#xff09;”将于2024年3月5-7日在山东国际会展中心&#xff08;济南市日照路1号&#xff09;举办。同期中国生物发酵产业协会、山东省轻工机械协会、山东省食品工业协会联合举办“2024食品饮料行业数字化、智…

Win10提示找不到mfc71ud.dll文件,程序无法运行,的解决办法,亲测有效

mfc71ud.dll是Windows操作系统中的一个动态链接库文件&#xff0c;由Microsoft公司开发&#xff0c;属于Microsoft Foundation Class (MFC)库的一部分。"ud"后缀表示这是一个Unicode Debug版本&#xff0c;主要用于支持程序开发和测试。 这个文件主要被用于运行各种…

C++--引用

一.引用的定义&#x1f357; 引用是已定义的变量的别名。 例如将data作为value的引用(别名),则可以随意使用data或value来表示该变量。 引用有何作用呢? 其主要作用是作为函数的形参(和函数的返回值)。这样 函数的形参就是实参本身,而不是其副本。这样除指针外,引用也为函数处…

命名空间 “Eigen“ 没有成员 “SelfAdjointEigenSolver“

代码中用到SelfAdjointEigenSolver 结果报错&#xff1a;报错实在windows10条件下发生的。 查找资料&#xff0c;最后还是要定位到官方文档。 计算自伴随矩阵的特征值和特征向量。 这是在特征值模块中定义的。 添加如下引用即可解决&#xff0c;请点赞关注。 #include <…

ssm+vue的物流配送人员车辆调度管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项项目。

演示视频&#xff1a; ssmvue的物流配送人员车辆调度管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…

腾讯云服务器定价_云服务器价格_云服务器计费模式

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时&#xff0c;发现其用到了线程池技术&#xff0c;感觉耳目一新。以前基本只是听过线程池&#xff0c;但是并没有实际应用。对它有一丝的好奇&#xff0c;于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

腾讯云服务器购买指南,2024更新购买步骤

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

2024年学鸿蒙开发就业前景怎么样?

随着科技的不断进步&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;逐渐引起了人们的关注。 2024年&#xff0c;鸿蒙开发就业前景如何&#xff1f; 对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 首先&a…