1.6 testNG实现监听

426 阅读1分钟

@Listeners定义一个测试类的监听器

例子:监听Mathematics测试用例日志

第一步:新建Mathematics(要测试的类)

package com.test.modle;

public class Mathematics {
    public int getFactorial(int num){
        int result = 0;
        if(num == 1){
            result = num;
        }else {
            result = getFactorial(num - 1)*num;
        }
        return result;
    }
}

第二步:新建Test_L类继承TestListenerAdapter监听类(打印日志类)重写onStart、onTestStart、onTestSuccess、onTestFailure、onTestSkipped、onFinish方法

package com.test.test_modle;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

public class Test_L extends TestListenerAdapter {
    @Override
    public void onStart(ITestContext testContext) {
        super.onStart(testContext);
        //testContext.getName()获取项目名称
        System.out.println(String.format("%s项目测试开始",testContext.getName()));
    }

    @Override
    public void onTestStart(ITestResult result) {
        super.onTestStart(result);
        //result.getInstanceName()获取测试包名与类名
        System.out.println(String.format("%s测试用例开始",result.getInstanceName(),result.getName()));
    }

    @Override
    public void onTestSuccess(ITestResult tr) {
        super.onTestSuccess(tr);
        //tr.getInstanceName()获取通过测试用例名称
        System.out.println(String.format("%s.%s测试用例通过",tr.getInstanceName(),tr.getName()));
    }

    @Override
    public void onTestFailure(ITestResult tr) {
        super.onTestFailure(tr);
        //tr.getInstanceName()获取失败测试用例名称
        System.out.println(String.format("%s.%s测试用例失败,失败原因:\n%s",tr.getInstanceName(),
                tr.getName(),tr.getThrowable()));
    }

    @Override
    public void onTestSkipped(ITestResult tr) {
        super.onTestSkipped(tr);
        //tr.getInstanceName()获取跳过测试用例名称
        System.out.println(String.format("%s.%s跳过测试用例",tr.getInstanceName(),tr.getName()));
    }

    @Override
    public void onFinish(ITestContext testContext) {
         super.onFinish(testContext);
        //testContext.getName()获取项目名称
        System.out.println(String.format("%s项目测试结束",testContext.getName()));
    }
}

第三步:新建Test_L_one测试类,测试Mathematics并监听

com.test.test_modle.Test_L.class
package com.test.test_modle;
import com.test.modle.Mathematics;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners({com.test.test_modle.Test_L.class})
public class Test_L_one {

    Mathematics mathematics = null;
    int num = 0;

    @Test
    public void test_getFactorial_1(){
        mathematics = new Mathematics();
        num = mathematics.getFactorial(1);
        Assert.assertEquals(num,1);
    }

    @Test
    public void test_getFactorial_2(){
        mathematics = new Mathematics();
        num = mathematics.getFactorial(1);
        Assert.assertEquals(num,6);
    }

    @Test(enabled = true)  //是否跳过测试
    public void test_getFactorial_3(){
        mathematics = new Mathematics();
        num = mathematics.getFactorial(2);
        Assert.assertEquals(num,120);
        throw new SkipException("不要测试");//打印日志
    }
}