结果为:
[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),我们将立即处理。