对BeforeSuite和BeforeTest的理解

对BeforeSuite和BeforeTest的理解

  在BeforeSuite、BeforeTest、BeforeClass、BeforeMethod及BeforeGroups中,后面三个注解都比较好理解,其实BeforeSuite、BeforeTest的字面意思也是很简单的:

  BeforeSuite:在整个测试集运行之前运行;

  BeforeTest:在测试集中的每个Test之前运行。

  但是有点疑惑的是:BeforeClass、BeforeMethod及BeforeGroups都是在一个测试类开始运行之后才执行的;而BeforeSuite、BeforeTest定义在测试类的内部,但是却在

测试类运行之前执行。这就有点不大好理解,如果有多个平行的测试类,这些测试类只需要一个BeforeSuite、BeforeTest,那么这个BeforeSuite、BeforeTest定义在哪个测试类

中比较好呢?或者如果每个测试类都定义了BeforeSuite、BeforeTest,这些BeforeSuite、BeforeTest以怎样的关系运行?

  其实BeforeSuite、BeforeTest的运行与否也是与测试类相关的,如果你在某个测试类中定义了BeforeSuite、BeforeTest,但是在xml文件中不执行该测试类,那么这个

BeforeSuite、BeforeTest也不会被执行。

  因此,我的理解是:如果多个测试类需要一个共同的BeforeSuite、BeforeTest,可以在一个单独的类中定义,但是运行测试时必须包含该类;如果每个测试类需要不同的

BeforeSuite、BeforeTest,那就各自定义各自的。

  例如:Test1和Test2都定义了BeforeSuite、BeforeTest:

 1 public class Test1 {
 2     
 3     @BeforeSuite
 4     public void f_bs() {
 5         System.out.println("Test1.f_bs()");
 6     }
 7     
 8     @BeforeTest
 9     public void f_bt() {
10         System.out.println("Test1.f_bt()");
11     }
12     
13     @BeforeClass
14     public void f_bc() {
15         System.out.println("Test1.f_bc()");
16     }
17     
18     @Test
19     public void test_m1() {
20         System.out.println("Test1.test_m1()");
21     }
22 }

 1 public class Test2 {
 2     
 3     @BeforeSuite
 4     public void f_bs() {
 5         System.out.println("Test2.f_bs()");
 6     }
 7     
 8     @BeforeTest
 9     public void f_bt() {
10         System.out.println("Test2.f_bt()");
11     }
12     
13     @BeforeClass
14     public void f_bc() {
15         System.out.println("Test2.f_bc()");
16     }
17     
18     @Test
19     public void test_m2() {
20         System.out.println("Test1.test_m2()");
21     }
22 }

  如果XML文件同时运行两个测试类:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <suite name="suite1">
 4     <test name="test1" verbose="2">
 5         <classes>
 6             <class name="sea.Test1" />
 7             <class name="sea.Test2" />
 8           </classes>    
 9     </test>
10 </suite>

  那么运行结果为如下,可见每个类中定义的BeforeSuite、BeforeTest都执行了:

Test1.f_bs()
Test2.f_bs()
Test1.f_bt()
Test2.f_bt()
Test1.f_bc()
Test1.test_m1()
Test2.f_bc()
Test1.test_m2()
PASSED: test_m1
PASSED: test_m2

  如果XML文件只执行1个测试类:

1 <?xml version="1.0" encoding="UTF-8"?>
2 
3 <suite name="suite1">
4     <test name="test1" verbose="2">
5         <classes>
6             <class name="sea.Test1" />
7           </classes>    
8     </test>
9 </suite>

  那么运行结果为如下,可见只有Test1类中定义的BeforeSuite、BeforeTest被执行了:

Test1.f_bs()
Test1.f_bt()
Test1.f_bc()
Test1.test_m1()
PASSED: test_m1

  如果把两个测试类放在不同的Test中,那么他们的BeforeTest也是被单独执行的:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <suite name="suite1">
 4     <test name="test1" verbose="2">
 5         <classes>
 6             <class name="sea.Test1" />
 7           </classes>    
 8     </test>
 9     
10     <test name="test2" verbose="2">
11         <classes>
12             <class name="sea.Test2" />
13           </classes>    
14     </test>
15 </suite>

Test1.f_bs()
Test2.f_bs()
Test1.f_bt()
Test1.f_bc()
Test1.test_m1()
PASSED: test_m1

Test2.f_bt()
Test2.f_bc()
Test1.test_m2()
PASSED: test_m2

 

转载于:https://www.cnblogs.com/haigege/p/5450311.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109044.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 室内定位指纹算法_指纹识别算法

    室内定位指纹算法_指纹识别算法一、概述最近在做一个基于蓝牙的室内定位的项目,做了一个三角定位算法,由于室内的环境比较复杂,信号反射折射比较多,很多时候信号的大小(RSSI)跟距离并不是完全一一对应的,可能远的地方信号反而更强,三角质心定位算法就有点不合适了,因此想试用指纹定位算法,看一下指纹定位算法的效果。在此总结一下指纹定位算法。 二、指纹定位算法介绍指纹定位算法是基于室内环境复杂,信号反射折射所形成的在不同

    2022年10月21日
  • linux查看ftp用户列表_linux ftp下载命令

    linux查看ftp用户列表_linux ftp下载命令ftp服务器在网上较为常见,Linuxftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文。下面由学习啦小编为大家整理了linux下查询ftp命令的相关知识,希望对大家有所帮助。Linuxftp命令的格式$ftp主机名/IP其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指…

  • 贴片电阻丝印是什么意思「建议收藏」

    贴片电阻丝印是什么意思「建议收藏」贴片电阻上的数字是什么意思?贴片电阻是电路原理中最常见的电子器件,在一块电路板上使用量较大的将会便是电阻器和电容器了。电阻由于体型小,非常容易设备电焊焊接,能极大地提升批量生产高效率、减少错误率、控制成本,因此应用愈来愈普遍。贴片电阻表层一般都是印着丝印油墨,其丝印油墨带表了不一样的电阻值信息内容,电阻的丝印油墨怎样讲解。普遍的电热丝印一般有这几类状况:1)含有三位数据的丝印油墨;2)2)含有四位数据的丝印油墨;3)3)含有英文字母R的丝印油墨;4)4)含有数据和英文字母混和的丝印油墨。带有

  • Java安全之Unsafe类

    Java安全之Unsafe类0x00前言前面使用到的一些JNI编程和Javaagent等技术,其实在安全里面的运用非常的有趣和微妙,这个已经说过很多次。后面还会发现一些比较有意思的技术,比如AS

    2021年12月12日
  • 华为 IP源防攻击和MAC认证

    华为 IP源防攻击和MAC认证文章目录一、拓扑二、IPSG三、MAC认证

  • NFV指的是_以致和以至的区别

    NFV指的是_以致和以至的区别这几年由于网路虚拟化技术的快速发展,很多网元设备都从传统的特定硬件转到通用硬件上的软件形态,那NFV和VNF这两个概念是有什么区别呢?NFV指网路功能虚拟化技术,通过IT虚拟化,实现传统通信网络的功能;VNF就是虚拟出来的一个个网元,实现某个网络功能单元,NF;NFV发展分为初级和高级阶段;初级阶段是基于传统硬件的软件执行环境转换为基于通用硬件的VM的专用虚拟化环境…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号