目录
本文将讨论TestNG以及如何通过执行testng.xml文件在TestNG中运行第一个测试用例。
TestNG是一个受JUnit和NUnit启发的测试框架,但引入了一些新功能,使其更强大,更易于使用,例如:
TestNG是一个开源测试框架,NG代表下一代,旨在简化从单元测试到集成测试的广泛测试需求。
xml是一个XML文件,包含测试用例的信息和配置。TestNG使用testng.xml文件来运行用例,我们将看到如何创建testng.xml来执行我们的测试用例。
在移动之前,让我们创建一个项目,通过testng.xml文件运行一个测试用例。
安装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>
现在你的项目结构看起来像这样-
注意: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注释的方法。
下面是更新后的项目结构。
现在,我们将创建一个testng.xml文件来运行测试用例。
我们可以手动或使用IDE创建testng.xml文件。我们将涵盖两种方式-
让我们一个一个来看。
这里我们将使用五个术语
还有其他术语,但我们将在这篇文章中只讨论上述术语。
下图显示了层次结构,suite在顶部,方法在底部。它们也将以相同的顺序写入testng.xml文件。
标签也将遵循相同的层次结构。
我们可以省略一些标签,比如不强制提到package标签,因为每个标签都有一个用途,有时我们不需要标签。但是也有一些强制性的标签,比如suite和test。
现在,让我们运行我们的测试用例。我们可以用多种方式运行测试用例-
在项目的根目录下创建一个名为“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>
现在,运行这个XML文件。我们可以通过右键单击XML文件然后选择RunAsTestNGSuite来运行XML文件。
这将运行testng.xml并执行包中的所有案例。因为我们只有一个测试用例,所以它将是这种情况,我们将在控制台上看到下面的输出。
Executing first test case
===============================================
codekru
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
同样,我们也可以运行一个包含测试用例的类。这就需要以相同的顺序使用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创建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 -->
Executing first test case
===============================================
Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================