• TestNg依赖高级用法之强制依赖与顺序依赖------TestNg依赖详解(二)


    TestNg使用dependsOnGroups属性来进行依赖测试

    测试方法依赖于某个或某些方法,这个/这些方法作为前置依赖条件

    强制依赖:如果被依赖的某一个方法发生了异常,那么之后的方法都不会被执行(默认)

    顺序依赖:无论被依赖的方法是否出现异常,后续的方法都会被执行,通过alwaysRun=“true”来配置

    [java] view plain copy
     
    1. /** 
    2.  *  
    3.  * <p> 
    4.  * Title: TestngDependOnGroups 
    5.  * </p> 
    6.  *  
    7.  * <p> 
    8.  * Description: 测试方法依赖于某个或某些方法,这个/这些方法作为前置依赖条件 
    9.  *  
    10.  * 如果依赖的方法发生异常而不能正确的执行时,默认情况下,接下来的方法将不会被执行(强制依赖,默认) 如果在方法体的注解上设置了alwaysRun = 
    11.  * true,那么此时在依赖链中的任何一个方法出现异常都不会影响其它方法的执行 
    12.  *  
    13.  * dependsOnGroups 
    14.  *  
    15.  * </p> 
    16.  *  
    17.  * <p> 
    18.  * Company: 
    19.  * </p> 
    20.  *  
    21.  * @author : Dragon 
    22.  *  
    23.  * @date : 2014年10月21日 
    24.  */  
    25. public class TestngDependOnGroups {  
    26.     @Test(groups = { "init" })  
    27.     public void serverStartedOk() {  
    28.         System.out.println("serverStartedOk.....");  
    29.     }  
    30.   
    31.     @Test(groups = { "init2" })  
    32.     public void initEnvironment() {  
    33.   
    34.         System.out.println("initEnvironment.....");  
    35.         throw new RuntimeException("unexpected fail......");  
    36.     }  
    37.   
    38.     @Test(dependsOnGroups = { "init.*" }, alwaysRun = true)  
    39.     public void method1() {  
    40.         System.err.println("I am over here.....");  
    41.     }  
    42. }  

    配置文件:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
    3. <suite name="framework_testng" >  
    4.     <test verbose="2" name="TestngDependOnGroups">  
    5.         <classes>  
    6.             <class name="com.dragon.testng.annotation.TestngDependOnGroups">  
    7.             </class>  
    8.         </classes>  
    9.     </test>  
    10. </suite>  

    运行结果:我们发现在配置了顺序依赖之后,即使initEnvironment()方法抛出了异常,method1()还是执行了并且passed

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. initEnvironment.....  
    2. serverStartedOk.....  
    3. I am over here.....  
    4. PASSED: serverStartedOk  
    5. PASSED: method1  
    6. FAILED: initEnvironment  
    7. java.lang.RuntimeException: unexpected fail......  
    8.     at com.dragon.testng.annotation.TestngDependOnGroups.initEnvironment(TestngDependOnGroups.java:41)  
    9.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    10.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
    11.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
    12.     at java.lang.reflect.Method.invoke(Method.java:606)  
    13.     at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)  
    14.     at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)  
    15.     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)  
    16.     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)  
    17.     at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)  
    18.     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)  
    19.     at org.testng.TestRunner.privateRun(TestRunner.java:767)  
    20.     at org.testng.TestRunner.run(TestRunner.java:617)  
    21.     at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)  
    22.     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)  
    23.     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)  
    24.     at org.testng.SuiteRunner.run(SuiteRunner.java:240)  
    25.     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)  
    26.     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)  
    27.     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)  
    28.     at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)  
    29.     at org.testng.TestNG.run(TestNG.java:1057)  
    30.     at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)  
    31.     at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)  
    32.     at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)  
    33.   
    34.   
    35. ===============================================  
    36.     TestngDependOnGroups  
    37.     Tests run: 3, Failures: 1, Skips: 0  
    38. ===============================================  

    默认的强制依赖:Java code:

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. public class TestngDependOnGroups {  
    2.     @Test(groups = { "init" })  
    3.     public void serverStartedOk() {  
    4.         System.out.println("serverStartedOk.....");  
    5.     }  
    6.   
    7.     @Test(groups = { "init2" })  
    8.     public void initEnvironment() {  
    9.   
    10.         System.out.println("initEnvironment.....");  
    11.         throw new RuntimeException("unexpected fail......");  
    12.     }  
    13.   
    14.     @Test(dependsOnGroups = { "init.*" })  
    15.     public void method1() {  
    16.         System.err.println("I am over here.....");  
    17.     }  
    18. }  

    原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

    运行结果: 这时我们发现initEnvironment() 抛出异常后, method1() 被跳过了,并没有被执行

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
      1. initEnvironment.....  
      2. serverStartedOk.....  
      3. PASSED: serverStartedOk  
      4. FAILED: initEnvironment  
      5. java.lang.RuntimeException: unexpected fail......  
      6.     at com.dragon.testng.annotation.TestngDependOnGroups.initEnvironment(TestngDependOnGroups.java:41)  
      7.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
      8.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
      9.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
      10.     at java.lang.reflect.Method.invoke(Method.java:606)  
      11.     at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)  
      12.     at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)  
      13.     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)  
      14.     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)  
      15.     at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)  
      16.     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)  
      17.     at org.testng.TestRunner.privateRun(TestRunner.java:767)  
      18.     at org.testng.TestRunner.run(TestRunner.java:617)  
      19.     at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)  
      20.     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)  
      21.     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)  
      22.     at org.testng.SuiteRunner.run(SuiteRunner.java:240)  
      23.     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)  
      24.     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)  
      25.     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)  
      26.     at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)  
      27.     at org.testng.TestNG.run(TestNG.java:1057)  
      28.     at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)  
      29.     at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)  
      30.     at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)  
      31.   
      32. SKIPPED: method1  
      33.   
      34. ===============================================  
      35.     TestngDependOnGroups  
      36.     Tests run: 3, Failures: 1, Skips: 1  
      37. ===============================================  
  • 相关阅读:
    两个List集合过滤出不同集合
    TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
    sql server 查询某个表被哪些存储过程调用
    SQL server字符分割
    oracle 结果集合并
    tree与GridView交互
    oracle job相关
    ImportFileHandler 附件上传
    dt转换List CovertListHelper
    node版本管理mac版
  • 原文地址:https://www.cnblogs.com/longronglang/p/6123758.html
Copyright © 2020-2023  润新知