Testng继承处理

发表于:2018-9-04 11:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:夜近之时    来源:博客园

  结果为:
  [DEBUG] 2016-12-27 13:39:33,501 method:com.yesterday.time.testng.TestngTestng.test1(TestngTestng.java:14)TestngTestng.test1
  [DEBUG] 2016-12-27 13:39:33,536 method:com.yesterday.time.testng.TestngTestng1.test(TestngTestng1.java:10)TestngTestng1.test
  sfsd
  aaaaaaa
  [DEBUG] 2016-12-27 13:39:33,538 method:com.yesterday.time.testng.TestngTestng.testA(TestngTestng.java:22)TestngTestng.testA
  [DEBUG] 2016-12-27 13:39:33,539 method:com.yesterday.time.testng.TestngTestng1.test1(TestngTestng1.java:34)TestngTestng1.test1
  sfsd
  GGGGGGGG
  [DEBUG] 2016-12-27 13:39:33,541 method:com.yesterday.time.testng.TestngTestng.test1(TestngTestng.java:14)TestngTestng.test1
  [DEBUG] 2016-12-27 13:39:33,543 method:com.yesterday.time.testng.TestngTestng1.test2(TestngTestng1.java:22)TestngTestng1.test2
  sfsd
  aaaaaaa

  从上面的例子中还可以发下,每个关联@DataProvider的test都会在运行之前调用@DataProvider的。
  那么在调用父类中的方法的先后顺序是什么样的呢?
  事实证明:直接例子
  package com.yesterday.time.testng;
  import org.apache.log4j.Logger;
  import org.testng.annotations.*;
  public class TestngTestng {
  Logger logger = Logger.getLogger(TestngTestng.class);
  @BeforeClass
  public void testbeforeClass(){
  logger.debug("testbforeClass");
  }
  @BeforeMethod
  public void testbeforeMethod(){
  logger.debug("testbeforeMethod");
  }
  @BeforeSuite
  public void testbeforeSuite(){
  logger.debug("testbeforeSuite");
  }
  @BeforeGroups
  public void testbeforeGroups(){
  logger.debug("testbeforeGroups");
  }
  @BeforeTest
  public void testbeforeTest(){
  logger.debug("testbeforeTest");
  }
  @DataProvider(name =  "test1")
  public Object[][] test1(){
  logger.debug("TestngTestng.test1");
  return new Object[][]{{5}};
  }
  }
  package com.yesterday.time.testng;
  import org.testng.annotations.Test;
  public class TestngTestng2 extends TestngTestng{
  @Test(dataProvider = "test1")
  public void test(int id){
  logger.debug("TestngTestng2.test");
  System.out.println("sfsd");
  if(id>5)
  {
  System.out.println("GGGGGGGG");
  }else{
  System.out.println("aaaaaaa");
  }
  }
  }

  结果为:
  [DEBUG] 2016-12-27 13:51:15,916 method:com.yesterday.time.testng.TestngTestng.testbeforeSuite(TestngTestng.java:22)testbeforeSuite
  [DEBUG] 2016-12-27 13:51:15,923 method:com.yesterday.time.testng.TestngTestng.testbeforeTest(TestngTestng.java:30)testbeforeTest
  [DEBUG] 2016-12-27 13:51:15,933 method:com.yesterday.time.testng.TestngTestng.testbeforeClass(TestngTestng.java:13)testbforeClass
  [DEBUG] 2016-12-27 13:51:15,955 method:com.yesterday.time.testng.TestngTestng.test1(TestngTestng.java:36)TestngTestng.test1
  [DEBUG] 2016-12-27 13:51:15,960 method:com.yesterday.time.testng.TestngTestng.testbeforeMethod(TestngTestng.java:18)testbeforeMethod
  [DEBUG] 2016-12-27 13:51:15,966 method:com.yesterday.time.testng.TestngTestng2.test(TestngTestng2.java:10)TestngTestng2.test
  sfsd
  aaaaaaa

  从结果上来看,在父类中要注意调用的@DataProvider无法用@BeforeMethod中的方法的问题,这个和继承的加载顺序有关。如果测试方法和@DataProvider、@BeforeMethod在相同的类中,就不会存在这个问题

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号