亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
Selenium之如何監聽斷言
作者:網絡轉載 發布時間:[ 2016/1/4 15:14:38 ] 推薦標簽:功能測試 功能測試工具

  一.概述
  測試用的執行通過與否,需要對比期望結果和實際結果的值,因此在自動化測試中我們需要進行斷言來獲得執行的結果,那么如果在執行的過程中有異常,該怎么辦呢,我們是否要查看異常信息呢,于是乎如何得到我們所需要的異常信息成為我們需要思考的問題,該怎么解決呢,其實so eazy!tesgNG的測試用例監聽器可以幫助我們解決這個問題。
  二.監聽斷言類AssertionListener
1 public class AsserttionListener extends TestListenerAdapter{
2
3     private Log log=new Log(this.getClass());
4
5     @Override
6     public void onTestStart(ITestResult result) {
7         // TODO Auto-generated method stub
8         Assertion.begin();
9     }
10
11     @Override
12     public void onTestFailure(ITestResult tr) {
13         // TODO Auto-generated method stub
14         this.handleAssertion(tr);
15     }
16
17     @Override
18     public void onTestSkipped(ITestResult tr) {
19         // TODO Auto-generated method stub
20         this.handleAssertion(tr);
21     }
22
23     @Override
24     public void onTestSuccess(ITestResult tr) {
25         // TODO Auto-generated method stub
26         this.handleAssertion(tr);
27     }
28
29     private int index;
30
31     private boolean isNew=false;
32
33     /**
34      * 得到測試類所需的測試異常信息
35      * @param tr
36      */
37     private void handleAssertion(ITestResult tr){
38         Throwable throwable=tr.getThrowable();
39         if(!Assertion.flag||throwable!=null){
40             if(throwable==null){
41                 throwable=new Throwable();
42                 isNew=true;
43             }
44             StackTraceElement[] alltrace=new StackTraceElement[0];
45             for (Error e : Assertion.errors) {
46                 alltrace=this.getAllStackTraceElement(tr, e, null, alltrace);
47             }
48             if(!isNew){
49                 alltrace=this.getAllStackTraceElement(tr, null, throwable, alltrace);
50             }else{
51                 isNew=false;
52             }
53             throwable.setStackTrace(alltrace);
54             tr.setThrowable(throwable);
55             Assertion.flag=true;
56             Assertion.errors.clear();
57             tr.setStatus(ITestResult.FAILURE);
58         }
59     }
60
61     /**
62      * 得到測試類需要的StackTraceElement數組
63      * @param tr
64      * @param e
65      * @param throwable
66      * @param alltrace
67      * @return
68      */
69     private StackTraceElement[] getAllStackTraceElement(ITestResult tr,Error e,Throwable throwable,StackTraceElement[] alltrace){
70         StackTraceElement[] traces=(e==null?throwable.getStackTrace():e.getStackTrace());
71         StackTraceElement[] et=this.getKeyStackTrace(tr, traces);
72         String msg=(e==null?throwable.getMessage():e.getMessage());
73         StackTraceElement[] message=new StackTraceElement[]{new StackTraceElement("message : "+msg+" in method : ",tr.getMethod().getMethodName(),tr.getTestClass().getRealClass().getSimpleName(),index)};
74         index=0;
75         alltrace=this.merge(alltrace, et);
76         alltrace=this.merge(alltrace, message);
77         return alltrace;
78     }
79
80     /**
81      * 根據測試類名獲得該測試類的StackTraceElement數組
82      * @param tr
83      * @param stackTraceElements
84      * @return
85      */
86     private StackTraceElement[] getKeyStackTrace(ITestResult tr,StackTraceElement[] stackTraceElements){
87         List<StackTraceElement> ets=new ArrayList<StackTraceElement>();
88         for (StackTraceElement stackTraceElement : ets) {
89             if(stackTraceElement.getClassName().equals(tr.getTestClass().getName())){
90                 ets.add(stackTraceElement);
91                 index=stackTraceElement.getLineNumber();
92             }
93         }
94         StackTraceElement[] et=new StackTraceElement[ets.size()];
95         for (int i = 0; i < et.length; i++) {
96             et[i]=ets.get(i);
97         }
98         return et;
99     }
100
101     /**
102      * 合并兩個StackTraceElement數組
103      * @param trace1
104      * @param trace2
105      * @return
106      */
107     private StackTraceElement[] merge(StackTraceElement[] trace1,StackTraceElement[] trace2){
108         StackTraceElement[] ste=new StackTraceElement[trace1.length+trace2.length];
109         for (int i = 0; i < trace1.length; i++) {
110             ste[i]=trace1[i];
111         }
112         for (int i = 0; i < trace2.length; i++) {
113             ste[trace1.length+i]=trace2[i];
114         }
115         return ste;
116     }

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 免费看黄色片视频 | 91精品成人免费国产片 | 亚洲精品网站在线观看不卡无广告 | 欧美一区二区三区影院 | 99精彩视频在线观看 | 免费国产一级特黄久久 | 亚洲区免费 | 免费老色鬼永久视频网站 | 国产视频欧美 | 黄 色 毛片免费 | 性美国xxxxx| 成年啪啪网站免费播放看 | 日本福利片午夜免费观着 | 美国成人免费视频 | 丁香激情综合色伊人久久 | 亚洲一级黄色片 | 免费观看欧美性一级 | 中文字幕人成乱码在线观看 | 国产美女无遮挡免费视频网站 | 天天看天天爽 | 有码 在线| 亚洲欧美强伦一区二区另类 | 伊人365影院| 国产免费一级精品视频 | 午夜激情在线 | 在线黄网站| 国产日韩欧美911在线观看 | 青青综合网| 黄色永久免费 | 91段视频| 日韩精品观看 | 亚洲精品高清在线观看 | 国产香港日本三级在线观看 | 久久成人18免费网站 | 99re在线免费视频 | 免费特级毛片 | 国产免费一区不卡在线 | 亚欧日韩毛片在线看免费网站 | 日韩在线观看你懂的 | 国产精品天天影视久久综合网 | 精品亚洲欧美高清不卡高清 |