исполнение Vs. точка соединения

У меня есть два разных аспектных класса для подсчета количества вызовов нестатических методов для выполнения тестовой программы. Первый аспект подсчитывает методы в точках соединения "call":

pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

в то время как второй аспект считает методы в точках соединения «выполнения»:

pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

methodCallCounter () - статический метод в классе счетчика.

Количество вызовов метода для небольшой тестовой программы одинаково. Но когда я заменяю тестовую программу более крупной программой, количество вызовов методов во втором классе аспектов (с pointcut выполнения) больше, чем количество вызовов методов в классе аспектов с помощью pointcut call. Это разумно, поскольку точка соединения вызова не выбирает вызовы, сделанные с помощью super, и, следовательно, не учитывает их.

Однако я сталкивался со случаем, когда для конкретного выполнения программы количество вызовов нестатических методов в классе аспектов с «callpointcut» было больше, чем количество вызовов методов в классе аспектов с «executepoint pointcut». Я не могу найти никакой интерпретации, почему это происходит. Любая мысль о причине второй ситуации приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос