Всем привет. Может кто подскажет.
Имею функции типа:
public void checkAllDocScroll() throws IOException {
        try {
            checkboxSelectAllScroll.click();
            help.makeScreenshot();
        } catch (Exception e){
            help.makeScreenshot();
            throw e;
        }
    }
Повторяется везде блок try catch, хотел бы вынести это отдельно, не знаю можно ли с помощью аннотаций это сделать:
@ Check
public void checkAllDocScroll() throws IOException {
        checkboxSelectAllScroll.click();
        help.makeScreenshot();
}
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          А почему не повесить скриншотер просто в листенер OnError и не париться по поводу AOP?
         
        
        
           
           
           2 лайка
         
         
            
            
          
       
      
        
        
          создал свой листенер
package ru.otr.JPort.util;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import java.io.IOException;
import static ru.otr.JPort.util.ScreenShoter.makeScreenshot;
public class OnFailListener implements ITestListener {
    @Override
    public void onTestStart(ITestResult result) {}
    @Override
    public void onTestSuccess(ITestResult result) {}
    @Override
    public void onTestFailure(ITestResult result) {
        try {
            makeScreenshot("Failure screenshot");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onTestSkipped(ITestResult result) {}
    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        try {
            makeScreenshot("Failure screenshot");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onStart(ITestContext context) {}
    @Override
    public void onFinish(ITestContext context) {}
}
и класс сриншотер
public class ScreenShoter {
private  ScreenShoter(){};
    @Attachment(value = "{0}", type = "image/png")
    public static byte[] makeScreenshot(String name) throws IOException {
        return ((TakesScreenshot)WebDriverFactory.getDriver(PropertyLoader.loadCapabilities())).getScreenshotAs(OutputType.BYTES);
    }
}
добавляю тестовому классу аннотацию
@Listeners(OnFailListener.class)
Взял отсюда