selenium自動化-java-封斷言類2

來源:互聯網
上載者:User

標籤:stat   code   []   exp   list   imp   blog   lis   this   

封裝斷言類

 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     @Override14     public void onTestStart(ITestResult result) {15         Assertion.flag = true;       16         Assertion.errors.clear();17     }18      19     @Override20     public void onTestFailure(ITestResult tr) {21         this.handleAssertion(tr);22     }23      24     @Override25     public void onTestSkipped(ITestResult tr) {26         this.handleAssertion(tr);27     }28      29     @Override30     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 }

 

selenium自動化-java-封斷言類2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.