TestNG测试方法
@Test(enabled = false)
有助于禁用此测试用例。
分组测试是TestNG中的一个新的创新功能,使用<groups>
标记在testng.xml
文件中指定分组。 它可以在<test>
或<suite>
标签下找到。 <suite>
标签中指定分组适用于其下的所有<test>
标签。或者标注 @Test(groups = "组名")
;
@Test(expectedExceptions = ArithmeticException.class)预期的异常测试
@Test(timeout = 1000)超时测试
测试套件是用于测试软件程序的行为或一组行为的测试用例的集合。 在TestNG中,我们无法在测试源代码中定义一个套件,但它可以由一个XML文件表示,因为套件是执行的功能。 它还允许灵活配置要运行的测试。 套件可以包含一个或多个测试,并由<suite>
标记定义。
<suite>
是testng.xml
的根标记。 它描述了一个测试套件,它又由几个<test>
部分组成。
下表列出了<suite>
接受的所有定义的合法属性。
属性 | 描述 |
---|---|
name | 套件的名称,这是一个强制属性。 |
verbose | 运行的级别或详细程度。 |
parallel | TestNG是否运行不同的线程来运行这个套件。 |
thread-count | 如果启用并行模式(忽略其他方式),则要使用的线程数。 |
annotations | 在测试中使用的注释类型。 |
time-out |
在本测试中的所有测试方法上使用的默认超时。 |
有时,我们可能需要以特定顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态。 TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明。 TestNG允许指定依赖关系: 在@Test注释中使用属性dependsOnMethods,或者 在@Test注释中使用属性dependsOnGroups。 在TestNG中,我们使用dependOnMethods和dependsOnGroups来实现依赖测试, 如果依赖方法失败,则将跳过所有后续测试方法。
通过alwaysRun=“true”来配置,无论被依赖的方法是否出现异常,后续的方法都会被执行,
参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。
TestNG可以通过两种不同的方式将参数直接传递给测试方法:
- 使用
testng.xml
- 使用数据提供者
@Parameters
或@DataProvider
将参数传递给@Test
方法。
例如:
public class CharUtilsTest {
@DataProvider
public Object[][] ValidDataProvider() {
return new Object[][]{
{ 'A', 65 },{ 'a', 97 },
{ 'B', 66 },{ 'b', 98 },
{ 'C', 67 },{ 'c', 99 },
{ 'D', 68 },{ 'd', 100 },
{ 'Z', 90 },{ 'z', 122 },
{ '1', 49 },{ '9', 57 }
};
}
@Test(dataProvider = "ValidDataProvider")
public void CharToASCIITest(final char character, final int ascii) {
int result = CharUtils.CharToASCII(character);
Assert.assertEquals(result, ascii);
}
@Test(dataProvider = "ValidDataProvider")
public void ASCIIToCharTest(final char character, final int ascii) {
char result = CharUtils.ASCIIToChar(ascii);
Assert.assertEquals(result, character);
}
}
@Test(invocationCount =?)
这个invocationCount
确定TestNG应该运行这个测试方法的次数。
@Test(invocationCount = ?, threadPoolSize = ?)
threadPoolSize
属性告诉TestNG创建一个线程池以通过多个线程运行测试方法。 使用线程池,会大大降低测试方法的运行时间。
最新文章
- WPF下的仿QQ图片查看器
- 在线音乐网站【04】Part two 功能实现
- JDK - Tomcat - Eclipse - JSP - Servlet 配置运行全攻略
- 在fmri研究中,cca的应用历史
- 【转】iTunes下载速度太慢?两招帮你提速!-- 不错
- EasyUI 调用getSelections方法只能获取到一行的原因
- windows迁移linux问题集锦[ZZ]
- OCP-1Z0-051-题目解析-第10题
- js根据出生年月日换算年龄
- Javapoet源码解析
- js for循环中定义clike事件由于闭包导致的循环变量获取不到的问题
- 资源中心的ES 服务的COM.IFLYTEK.ERSP.API.RESOURCEAPI 接口注册ZOOKEEPER失败,解决记录
- centos6.8配置php-fpm(php已在apache中以模块形式运行,nginx中同时以fastcgi运行)
- LVM : 扩展文件系统的容量
- Python之路 - Socketserver实现多并发
- linux开机自启动设置,自定义开机启动模版,nginx开机自启动服务
- KNY三人组对YiSmile小程序的项目总结
- 2. KNN和KdTree算法实现
- redis学习之一 - linux下安装配置
- js replaceChild