• 对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
  • 相关阅读:
    [国家集训队]单选错位
    [USACO08DEC]Patting Heads S 轻拍牛头
    [SCOI2007]压缩 题解
    Json常用的转换
    cookie的读入和读出
    SQLHelp帮助类
    使用FFmpeg生成HLS视频
    如何选择HLS视频码流
    MacOS下的IntelliJ IDEA & Android Studio 通用配置
    在Windows上配置Django + WSGI
  • 原文地址:https://www.cnblogs.com/haigege/p/5450311.html
Copyright © 2020-2023  润新知