Testng 简明教程
TestNG - Suite Test
test suite 是一个测试用例集合,用于测试软件程序的行为或一组行为。在 TestNG 中,我们不能在测试源代码中定义套件,但它由一个 XML 文件表示,因为套件是执行的特性。它还允许灵活配置要运行的测试。套件可以包含一个或多个测试,并由 <suite> 标签定义。
<suite> 是 testng.xml 的根标签。它描述了一个测试套件,该套件又由几个 <test> 部分组成。
下表列出了 <suite> 接受的所有合法属性。
Sr.No. |
Attribute & Description |
1 |
name 此套件的名称。它是一个 mandatory 属性。 |
2 |
verbose 此运行的级别或详细程度。 |
3 |
parallel TestNG 是否应该运行不同的线程来运行此套件。 |
4 |
thread-count 启用并行模式后要使用的线程数(否则会忽略)。 |
5 |
annotations 你在测试中使用的注释类型。 |
6 |
time-out 此测试中找到的所有测试方法上都将使用的默认超时。 |
在本章中,我们将向你展示一个有两个测试类 Test1 和 Test2 的示例,以使用测试套件一起运行它们。
Create a Class
在 /work/testng/src 中创建要测试的 java 类,比如 MessageUtil.java 。
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
// Constructor
// @param message to be printed
public MessageUtil(String message) {
this.message = message;
}
// prints the message
public String printMessage() {
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage() {
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Create Test Case Classes
在 /work/testng/src 中创建名为 Test1.java 的 Java 类文件。
import org.testng.Assert;
import org.testng.annotations.Test;
public class Test1 {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
Assert.assertEquals(message, messageUtil.printMessage());
}
}
在 /work/testng/src * 中创建名为 *Test2.java 的 Java 类文件。
import org.testng.Assert;
import org.testng.annotations.Test;
public class Test2 {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message,messageUtil.salutationMessage());
}
}
现在,我们来在 */work/testng/src * 中编写 testng.xml,它将包含以下 <suite> 标记:-
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "exampletest1">
<classes>
<class name = "Test1" />
</classes>
</test>
<test name = "exampletest2">
<classes>
<class name = "Test2" />
</classes>
</test>
</suite>
Suite1 包含 exampletest1 和 exampletest2 。
使用 javac 编译所有 Java 类。
/work/testng/src$ javac MessageUtil.java Test1.java Test2.java
现在,运行 testng.xml,这将运行所提供的测试用例类中定义的测试用例。
/work/testng/src$ java org.testng.TestNG testng.xml
验证输出。
Manisha
Inside testSalutationMessage()
Hi!Manisha
===============================================
Suite1
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
您也可以检查 test-output 文件夹。在 Suite1 文件夹下,可以看到创建了两个 html 文件,exampletest1.html 和 exampletest2.html,它们将如下所示 −