zoukankan      html  css  js  c++  java
  • selenium自动化-java-封断言类2

    封装断言类

     1 package streamax.com;
     2  
     3 import java.util.ArrayList;
     4 import java.util.List;
     5  
     6 import org.testng.Assert;
     7  /*
     8   * 断言类
     9   * 被調用判斷
    10   *
    11   */
    12 public class Assertion {
    13      
    14     public static boolean flag = true;
    15      
    16     public static List<Error> errors = new ArrayList<Error>();
    17      
    18     public static void verifyEquals(Object actual, Object expected){
    19         try{
    20             Assert.assertEquals(actual, expected);
    21         }catch(Error e){
    22             errors.add(e);
    23             flag = false;
    24         }
    25     }
    26      
    27     public static void verifyEquals(Object actual, Object expected, String message){
    28         try{
    29             Assert.assertEquals(actual, expected, message);
    30         }catch(Error e){
    31             errors.add(e);
    32             flag = false;
    33         }
    34     }
    35  
    36 }

    2 监听类

     1 package streamax.com;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5  
     6 import org.testng.ITestResult;
     7 import org.testng.TestListenerAdapter;
     8  /*
     9   * 监听类
    10   */
    11 public class AssertionListener extends TestListenerAdapter {
    12  
    13     @Override
    14     public void onTestStart(ITestResult result) {
    15         Assertion.flag = true;       
    16         Assertion.errors.clear();
    17     }
    18      
    19     @Override
    20     public void onTestFailure(ITestResult tr) {
    21         this.handleAssertion(tr);
    22     }
    23      
    24     @Override
    25     public void onTestSkipped(ITestResult tr) {
    26         this.handleAssertion(tr);
    27     }
    28      
    29     @Override
    30     public void onTestSuccess(ITestResult tr) {
    31         this.handleAssertion(tr);
    32     }
    33      
    34     private int index = 0;
    35      
    36     private void handleAssertion(ITestResult tr){
    37         if(!Assertion.flag){
    38             Throwable throwable = tr.getThrowable();           
    39             if(throwable==null){
    40                 throwable = new Throwable();
    41             }           
    42             StackTraceElement[] traces = throwable.getStackTrace();
    43             StackTraceElement[] alltrace = new StackTraceElement[0];           
    44             for (Error e : Assertion.errors) {
    45                 StackTraceElement[] errorTraces = e.getStackTrace();
    46                 StackTraceElement[] et = this.getKeyStackTrace(tr, errorTraces);
    47                 StackTraceElement[] message = new StackTraceElement[]{new StackTraceElement("message : "+e.getMessage()+" in method : ", tr.getMethod().getMethodName(), tr.getTestClass().getRealClass().getSimpleName(), index)};
    48                 index = 0;
    49                 alltrace = this.merge(alltrace, message);
    50                 alltrace = this.merge(alltrace, et);
    51             }
    52             if(traces!=null){
    53                 traces = this.getKeyStackTrace(tr, traces);
    54                 alltrace = this.merge(alltrace, traces);
    55             }           
    56             throwable.setStackTrace(alltrace);
    57             tr.setThrowable(throwable);
    58             Assertion.flag = true;   
    59             Assertion.errors.clear();
    60             tr.setStatus(ITestResult.FAILURE);           
    61         }
    62     }
    63      
    64     private StackTraceElement[] getKeyStackTrace(ITestResult tr, StackTraceElement[] stackTraceElements){
    65         List<StackTraceElement> ets = new ArrayList<StackTraceElement>();
    66         for (StackTraceElement stackTraceElement : stackTraceElements) {           
    67             if(stackTraceElement.getClassName().equals(tr.getTestClass().getName())){               
    68                 ets.add(stackTraceElement);
    69                 index = stackTraceElement.getLineNumber();
    70             }
    71         }
    72         StackTraceElement[] et = new StackTraceElement[ets.size()];
    73         for (int i = 0; i < et.length; i++) {
    74             et[i] = ets.get(i);
    75         }
    76         return et;
    77     }
    78      
    79     private StackTraceElement[] merge(StackTraceElement[] traces1, StackTraceElement[] traces2){
    80         StackTraceElement[] ste = new StackTraceElement[traces1.length+traces2.length];
    81         for (int i = 0; i < traces1.length; i++) {
    82             ste[i] = traces1[i];
    83         }
    84         for (int i = 0; i < traces2.length; i++) {
    85             ste[traces1.length+i] = traces2[i];
    86         }
    87         return ste;
    88     }
    89 }
  • 相关阅读:
    LOJ 6089 小Y的背包计数问题 —— 前缀和优化DP
    洛谷 P1969 积木大赛 —— 水题
    洛谷 P1965 转圈游戏 —— 快速幂
    洛谷 P1970 花匠 —— DP
    洛谷 P1966 火柴排队 —— 思路
    51Nod 1450 闯关游戏 —— 期望DP
    洛谷 P2312 & bzoj 3751 解方程 —— 取模
    洛谷 P1351 联合权值 —— 树形DP
    NOIP2007 树网的核
    平面最近点对(加强版)
  • 原文地址:https://www.cnblogs.com/hs22/p/6044082.html
Copyright © 2011-2022 走看看