selenium java断言_selenium自动化-java-封断言类2

1 packagestreamax.com;2

3 importjava.util.ArrayList;4 importjava.util.List;5

6 importorg.testng.ITestResult;7 importorg.testng.TestListenerAdapter;8 /*

9 * 监听类10 */

11 public class AssertionListener extendsTestListenerAdapter {12

13 @Override14 public voidonTestStart(ITestResult result) {15 Assertion.flag = true;16 Assertion.errors.clear();17 }18

19 @Override20 public voidonTestFailure(ITestResult tr) {21 this.handleAssertion(tr);22 }23

24 @Override25 public voidonTestSkipped(ITestResult tr) {26 this.handleAssertion(tr);27 }28

29 @Override30 public voidonTestSuccess(ITestResult tr) {31 this.handleAssertion(tr);32 }33

34 private int index = 0;35

36 private voidhandleAssertion(ITestResult tr){37 if(!Assertion.flag){38 Throwable throwable =tr.getThrowable();39 if(throwable==null){40 throwable = newThrowable();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 privateStackTraceElement[] getKeyStackTrace(ITestResult tr, StackTraceElement[] stackTraceElements){65 List ets = new ArrayList();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 = newStackTraceElement[ets.size()];73 for (int i = 0; i < et.length; i++) {74 et[i] =ets.get(i);75 }76 returnet;77 }78

79 privateStackTraceElement[] 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 returnste;88 }89 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值