zoukankan      html  css  js  c++  java
  • 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. ===============================================  
  • 相关阅读:
    Class类
    HTML表单格式化
    HTML表单组件
    html常用标签
    Html概述
    Myeclipse2016安装Aptana
    长元音
    对比法记音标
    Java基础八--构造函数
    WPS2012交叉引用技巧,word比wps这点强更新參考文献
  • 原文地址:https://www.cnblogs.com/longronglang/p/6123758.html
Copyright © 2011-2022 走看看