vendredi 8 mai 2020

Intercept all function calls inside a intercepted function by aspectj

I am new to AspectJ and reflections What I want to achieve is something like In the below example:

A test class :

    public class Sample {
    Home home = new Home();
    Account account = new Account();
    AccountAuthentication accountAuthentication = new AccountAuthentication();

    @Test
    public void loginInvalidCredentials(){
    home.clickOnAccount();
    account.login("Admin", "secret");
    accountAuthentication.waitForPage();
    Assert.assertTrue(true);
    }
}

I want to log Output something like this :

packageName.Sample.loginInvalidCredentials 
    packageName.Home.clickOnAccount();
    packageName.Account.login(userName = "Admin", Password ="secret");
    packageName.AccountAuthentication.waitForPage();
    packageName.Assert.assertTrue(value= true);

I have accessed the name of function packageName.Sample.loginInvalidCredentials with AspectJ

@Aspect
public class AspectClass {
    @Around("execution(* *(..)) && @annotation(org.testng.annotations.Test)")
    public void around(ProceedingJoinPoint point) throws Throwable {
        Method method = MethodSignature.class.cast(point.getSignature()).getMethod();
        String methodName = method.getName();
        System.out.println("Aspect called for method "+ point.getSignature().getDeclaringType().name +"."+methodName);

        try { 
             //TODO intercept each function call inside the method without any custom anotation and get the value of parameters as well
              joinPoint.proceed();
             } 
    }
}

Thanks in advance.





Aucun commentaire:

Enregistrer un commentaire