wykonanie Vs. zadzwoń Dołącz punkt

Mam dwie różne klasy aspektu do zliczania liczby wywołań metod niestatycznych do wykonania programu testowego. Pierwszy aspekt liczy metody łączenia punktów połączenia:

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

natomiast drugi aspekt liczy metody łączenia punktów „wykonania”:

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

methodCallCounter () jest metodą statyczną w klasie licznika.

Liczba wywołań metod dla małego programu testowego jest taka sama. Ale kiedy zmieniam program testowy na większy program, liczba wywołań metod w drugiej klasie aspektu (z wykonaniem pointcut) jest większa niż liczba wywołań metod w klasie aspektu z pointcutem wywołania. Jest to uzasadnione, ponieważ punkt połączenia nie wybiera połączeń wykonanych za pomocą super i dlatego ich nie liczy.

Napotkałem jednak przypadek, w którym dla konkretnego wykonania programu liczba niestatycznych wywołań metod w klasie aspektu z „wywołaniem wywołania” była wyższa niż liczba wywołań metod w klasie aspektu z „wykonaniem punktowym”. Nie mogę znaleźć żadnej interpretacji, dlaczego tak się dzieje. Każda myśl o przyczynie drugiej sytuacji jest doceniana.

questionAnswers(1)

yourAnswerToTheQuestion