TestNG测试框架的使用-Case运行失败后重试

参考这一片博客:https://blog.csdn.net/hujyhfwfh2/article/details/84950119

我们今天在它的基础上进行改造

1:导入依赖

需要导入log4j2的Maven依赖

		
			org.apache.logging.log4j
			log4j-core
			2.11.1
		

		
		
			org.apache.logging.log4j
			log4j-api
			2.11.1
		

2:创建log4j2的一些列操作

参考:https://blog.csdn.net/hujyhfwfh2/article/details/84961624

我们现在将日志记录在单独的文件夹下

  • log4j2.xml的配置
  • 注意:log4j2这个文件夹一定要build path到source目录下哦


	
	
		
		./logs
	
	
	
		
		
			
			
				
				
				
			
		
		
		
			
			
		
	
	
		
		
			
			
		
	

3:建立监听器

  • RetryListener 
package Listeners;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;

/**
 * case运行失败后再次运行
 * */

public class RetryListener implements IRetryAnalyzer {
	
    private static Logger logger=LogManager.getLogger(RetryListener.class.getName());
    private int initReTryNum=1;
    private int maxReTryNum=3;
    
    @Override
    public boolean retry(ITestResult iTestResult) {
        if(initReTryNum<=maxReTryNum){
        	//组装error message
            String message="Method<"+iTestResult.getName()+">Running failed the "+initReTryNum+"th Retry";
            logger.error(message);
            Reporter.setCurrentTestResult(iTestResult);
            Reporter.log(message);
            initReTryNum++;
            return true;
        }
        
        return false;
    }
}
  • OverrideIAnnotationTransformer
  • 如果没有OverrideIAnnotationTransformer 程序会抱错 所以这个是必须要有的
  • TestNG.xml中也是把OverrideIAnnotationTransformer 配置到listeners中
package Listeners;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;
import org.testng.internal.annotations.IAnnotationTransformer;

public class OverrideIAnnotationTransformer implements IAnnotationTransformer{

	@Override
	public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) {
		
		IRetryAnalyzer iRetryAnalyzer= iTestAnnotation.getRetryAnalyzer();
        if(iRetryAnalyzer==null){
            iTestAnnotation.setRetryAnalyzer(RetryListener.class);
        }	
	}
}

4:配置testng.xml

需要将它配置到listeners下




	
		
		
	
	
		
			
			
				
					
				
			
		
	 
	
		
			
			
				
					
				
			
		
	 
	
		
			
			
				
					
				
			
		
	 
 

6:运行testng.xml后的结果

  • 控制台输出:我们看到testcase2有被多次执行

TestNG测试框架的使用-Case运行失败后重试_第1张图片

  • 日志输出

TestNG测试框架的使用-Case运行失败后重试_第2张图片

 

你可能感兴趣的:(TestNG测试框架的使用)