对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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 抓包工具charles下载安装(破解版)

    抓包工具charles下载安装(破解版)1.下载:下载地址:https://www.charlesproxy.com/latest-release/download.do我的电脑是64位的,所以选择红框中的。2.下载之后安装按照默认next即可,然后选择路径。3.Charles破解破解地址:https://www.zzzmode.com/mytools/charles/按照下方文字填好,点击生成,会生成一个jar包,这个…

    2022年5月1日
    48
  • PCL 平面点云B样条曲线拟合

    PCL 平面点云B样条曲线拟合平面点云B样条曲线拟合

    2022年6月18日
    38
  • mybatis逻辑删除[通俗易懂]

    mybatis逻辑删除[通俗易懂]github地址https://github.com/heng1234/mybatis_pluspom.xml<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.apache.org/POM/4.0.0″xmlns:xsi=”http://www.w3.org/2001/XMLSche…

    2022年6月2日
    25
  • 手机设备上touchstart与click的区别

    手机设备上touchstart与click的区别1.基本定义touchstart手指触碰开始就能触发click1.手指触碰2.手指未在屏幕上移动3.在这个dom上手指离开屏幕4.触摸和离开屏幕之间的时间间隔较短因此,click事件有其独特的地方,不能完全用touchstart替代。2.click延时问题因为手机浏览器上,两次轻触是放大操作,在第一次被轻触后,浏览器需要先等一段时间,检…

    2022年6月22日
    32
  • 作为程序员,你真的刻意练习了吗

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章我真的刻意练习了吗刻意练习真的很重要,作为一名程序员,在读完这本书之后,也听了有关这本书的一些解读。有一些自己的感受。我是大四的下学期开始健身的,不到三个月的时间,能明显感觉到自己有了胸肌和腹肌。而在没有去健身房之前,平时也会去跑跑步,去操场上玩玩双杆,然后做几个引体向上,在宿舍也做几个俯卧撑,但是这些练…

    2022年2月28日
    49
  • 细谈 axios和ajax区别

    细谈 axios和ajax区别刚刚接触axios有好多疑惑。它和ajax有什么关系呢和区别呢?接下来一起看下:1.区别axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。简单来说:ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。axios是ajaxajax不止axios。下面列出代码来对比一下:axios:axios({…

    2022年10月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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