真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

TestNG-TestListenerAdapter和IReporter的實(shí)現(xiàn)方式

這篇文章給大家介紹TestNG-TestListenerAdapter和IReporter的實(shí)現(xiàn)方式,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的營(yíng)山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

https://static.javadoc.io/org.testng/testng/6.13/org/testng/TestListenerAdapter.html

TestListenerAdapter

一個(gè)簡(jiǎn)單的ITestListener適配器,用于存儲(chǔ)所有運(yùn)行的測(cè)試。
您可以使用以下方法檢索這些結(jié)果:getPassedTests()getFailedTests()getSkippedTests()
如果您擴(kuò)展此類以覆蓋任何這些方法,請(qǐng)記住如果您希望維護(hù)此測(cè)試列表,則調(diào)用它們的超級(jí)等效項(xiàng)。
IReporter 

客戶端可以實(shí)現(xiàn)此接口以生成報(bào)告。
它的方法generateReport()將在所有套件運(yùn)行后調(diào)用,參數(shù)將提供在該運(yùn)行期間發(fā)生的所有測(cè)試結(jié)果。

參考:

https://www.cnblogs.com/relax-zw/p/9884009.html

http://bbs.51testing.com/thread-1161195-1-1.html 

IReporter接口是干嘛的?就是讓用戶自定義報(bào)告的,很多人想要自定義報(bào)告,于是乎找各種插件,比如什么testng-xslt啊,reportng啊,各種配置,最后出來(lái)的結(jié)果,還不能定制化,但為什么不能自已定
制一份呢?testng的IReporter接口就接供了這樣的功能,我們只需要實(shí)現(xiàn)這個(gè)接口,并加上監(jiān)聽(tīng),就
能拿到所有的信息了,你可以把這些信息存數(shù)據(jù)庫(kù),或者自已生成一個(gè)html,亦或者寫在EXCEL里啊
等等,都可以,下面給出IReporter接口的實(shí)現(xiàn)方式:

自定義報(bào)告

package com.demo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.testng.IReporter;
import org.testng.IResultMap;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.xml.XmlSuite;

public class NewReport implements IReporter{
     
    @Override
    public void generateReport(List xmlSuites, List suites, String outputDirectory) {
        List list = new ArrayList();
        for (ISuite suite : suites) {          
            Map suiteResults = suite.getResults();
            for (ISuiteResult suiteResult : suiteResults.values()) {
                ITestContext testContext = suiteResult.getTestContext();           
                IResultMap passedTests = testContext.getPassedTests();
                IResultMap failedTests = testContext.getFailedTests();
                IResultMap skippedTests = testContext.getSkippedTests();
                IResultMap failedConfig = testContext.getFailedConfigurations();   
                list.addAll(this.listTestResult(passedTests));
                list.addAll(this.listTestResult(failedTests));
                list.addAll(this.listTestResult(skippedTests));
                list.addAll(this.listTestResult(failedConfig));
            }          
        }
        this.sort(list);
        this.outputResult(list, outputDirectory+"/test.txt");
    }
     
    private ArrayList listTestResult(IResultMap resultMap){
        Set results = resultMap.getAllResults();    
        return new ArrayList(results);
    }
     
    private void sort(List list){
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(ITestResult r1, ITestResult r2) {
                if(r1.getStartMillis()>r2.getStartMillis()){
                    return 1;
                }else{
                    return -1;
                }              
            }
        });
    }
     
    private void outputResult(List list, String path){      
        try {
            BufferedWriter output = new BufferedWriter(new FileWriter(new File(path)));
            StringBuffer sb = new StringBuffer();
            for (ITestResult result : list) {
                if(sb.length()!=0){
                    sb.append("\r\n");
                }
                sb.append(result.getTestClass().getRealClass().getName())
                  .append(" ")
                  .append(result.getMethod().getMethodName())
                  .append(" ")
                  .append(this.formatDate(result.getStartMillis()))
                  .append(" ")
                  .append(result.getEndMillis()-result.getStartMillis())
                  .append("毫秒 ")
                  .append(this.getStatus(result.getStatus()));
            }
            output.write(sb.toString());
            output.flush();
            output.close();
        } catch (IOException e) {          
            e.printStackTrace();
        }
         
    }
     
    private String getStatus(int status){
        String statusString = null;
        switch (status) {      
        case 1:
            statusString = "SUCCESS";
            break;
        case 2:
            statusString = "FAILURE";
            break;
        case 3:
            statusString = "SKIP";
            break;
        default:           
            break;
        }
        return statusString;
    }
     
    private String formatDate(long date){     
       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       return formatter.format(date);
    }

}

生成測(cè)試報(bào)告

package com.demo;

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners({com.demo.NewReport.class})
public class Test15 {
     
    @DataProvider
    public Object[][] dataProvider(){
        return new Object[][]{{1},{2}};
    }
     
    @Test(dataProvider="dataProvider")
    public void testAssert1(int a){
        Assert.assertEquals(1, a);
    }  
     
    @Test
    public void testAssert2(){ 
        Assert.assertEquals("2", "2"); 
    }

}

關(guān)于TestNG-TestListenerAdapter和IReporter的實(shí)現(xiàn)方式就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


本文標(biāo)題:TestNG-TestListenerAdapter和IReporter的實(shí)現(xiàn)方式
網(wǎng)站路徑:http://weahome.cn/article/geipoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部