TestNg使用(入门)

本文介绍了TestNG的基本用法,包括@Test、@BeforeMethod、@AfterMethod、@BeforeClass、@AfterClass、@BeforeSuite、@AfterSuite等注解的使用,并提供了测试套件配置示例,涵盖了忽略测试、方法分组、异常处理和依赖测试的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、@Test注解

@Test
	public void test1(){
		System.out.println("test1这是第一个测试方法");
	}

2、@BeforeMethod 在每一个测试方法运行之前都会执行

@BeforeMethod
	public void beforeMethod(){
		System.out.println("beforeMethod这是要在方法运行之前运行的方法");
	}

3、@AfterMethod 在每一个测试方法运行之后都会执行

@AfterMethod
	public void afterMethod(){
		System.out.println("afterMethod这是要在方法运行之后运行的方法");
	}

 

4、@BeforeClass 在类运行之前运行的方法

@BeforeClass
	public void beforeClass(){
		System.out.println("beforeClass这是要在类运行之前运行的方法");
	}

 

5、@AfterClass 在类运行之后运行的方法

@AfterClass
	public void afterClass(){
		System.out.println("afterClass这是要在类运行之后运行的方法");
	}

6、@BeforeSuit 在测试套件运行之前运行的方法,在BeforeClass之前运行的

@BeforeSuite
	public void beforeSuite(){
		System.out.println("beforeSuite");
	}

7、@AfterSuit 在测试套件运行之后运行的方法,在AfterClass之后运行的

@AfterSuite
	public void afterSuite(){
		System.out.println("afterSuite");
	}

测试套件示例:

1、新建三个类,LoginTest   PayTest   SuiteTest

public class LoginTest {
	@Test
	public void loginTest(){
		System.out.println("loginTest");
	}
}

 

 

 

 

public class PayTest {
	@Test
	public void payTest(){
		System.out.println("payTest");
	}
}
public class SuiteTest {
	@BeforeSuite
	public void beforeSuite(){
		System.out.println("beforeSuite");
	}
	
	@AfterSuite
	public void afterSuite(){
		System.out.println("afterSuite");
	}
}

testng.xml文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<suite name="ztt">
	<test name="login">
		<classes>
			<class name="com.ztt.aa.annotation.SuiteTest"/>
			<class name="com.ztt.aa.annotation.LoginTest"/>
		</classes>
	</test>
	<test name="pay">
		<classes>
			<class name="com.ztt.aa.annotation.SuiteTest"/>
			<class name="com.ztt.aa.annotation.PayTest"/>
		</classes>
	</test>
</suite>

运行结果:

beforeSuite
loginTest
payTest
afterSuite

忽略测试(本次测试不执行):

public class PayTest {
	@Test(enabled=false)
	public void payTest(){
		System.out.println("payTest");
	}
}

组测试(方法分组):

public class GroupsOnMethod {
	@Test(groups = "server")
	public void test1(){
		System.out.println("这是服务端组的测试方法11111");
	}
	@Test(groups = "server")
	public void test2(){
		System.out.println("这是服务端组的测试方法22222");
	}
	@Test(groups = "client")
	public void test3(){
		System.out.println("这是客户端组的测试方法33333");
	}
	@Test(groups = "client")
	public void test4(){
		System.out.println("这是客户端组的测试方法44444");
	}
	@BeforeGroups("server")
	public void test5(){
		System.out.println("这是服务端组运行之前运行的方法");
	}
	@AfterGroups("server")
	public void test6(){
		System.out.println("这是服务端组运行之后运行的方法");
	}
}

 

运行结果:

这是服务端组运行之前运行的方法
这是服务端组的测试方法11111
这是服务端组的测试方法22222
这是服务端组运行之后运行的方法
这是客户端组的测试方法33333
这是客户端组的测试方法44444

 

组测试(类分组):

@Test(groups = "stu")
public class GroupsOnClass1 {
	public void stu1(){
		System.out.println("GroupsOnClass1中的stu1111执行");
	}
	public void stu2(){
		System.out.println("GroupsOnClass1中的stu2222执行");
	}
}

 

 

 

 

 

 

@Test(groups = "stu")
public class GroupsOnClass2 {
	public void stu1(){
		System.out.println("GroupsOnClass2中的stu1111执行");
	}
	public void stu2(){
		System.out.println("GroupsOnClass2中的stu2222执行");
	}
}

 

@Test(groups = "teacher")
public class GroupsOnClass3 {
	public void teacher1(){
		System.out.println("GroupsOnClass3中的teacher1111执行");
	}
	public void teacher2(){
		System.out.println("GroupsOnClass3中的teacher2222执行");
	}
}

 

testng.xml内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<suite name="groups">
	<test name="runAll">
 		<groups>
			<run>
				<include name="stu"/>
			</run>
		</groups> 
		<classes>
			<class name="com.ztt.aa.annotation.GroupsOnClass1"/>
			<class name="com.ztt.aa.annotation.GroupsOnClass2"/>
			<class name="com.ztt.aa.annotation.GroupsOnClass3"/>
		</classes>
	</test>
</suite>

运行结果:

GroupsOnClass1中的stu1111执行
GroupsOnClass1中的stu2222执行
GroupsOnClass2中的stu1111执行
GroupsOnClass2中的stu2222执行

异常测试:

 

public class runtimeExceptionTest {
	@Test(expectedExceptions = RuntimeException.class)
	public void runTimeExceptionFailed(){
		System.out.println("这是一个失败的异常测试");
	}
	
	@Test(expectedExceptions = RuntimeException.class)
	public void runTimeExceptionSuccess(){
		System.out.println("这是我的异常测试");
		throw new RuntimeException();
	}
}

依赖测试:

public class DependTest {
	@Test
	public void test1(){
		System.out.println("这是测试方法一");
		throw new RuntimeException("这是我的异常");
	}
	@Test(dependsOnMethods = {"test1"})
	public void test2(){
		System.out.println("这是测试方法二");
	}
}

test2方法的运行依赖于test1,如果test1方法运行失败,那么test2方法不执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值