Ho due diverse classi di aspetto per contare il numero di chiamate al metodo non statiche per l'esecuzione di un programma di test. Il primo aspetto risiedono metodi su punti "call" join:esecuzione vs. chiamata Join point
pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
counter.methodCallCounter();
}
mentre il secondo aspetto risiedono metodi su "esecuzione" join punti:
pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
counter.methodCallCounter();
}
methodCallCounter() è un metodo statico della classe contatore.
Il numero di chiamate di metodo per il programma di test di piccole dimensioni è lo stesso. Ma quando cambio il programma di test con un programma più grande, il numero di chiamate di metodo nella seconda classe di aspetto (con punto di interruzione dell'esecuzione) è maggiore del numero di chiamate di metodo nella classe di aspetto con chiamata pointcut. Questo è ragionevole dal momento che il call join point non seleziona le chiamate fatte con super e quindi non le conteggia.
Tuttavia, ho riscontrato un caso in cui per l'esecuzione specifica del programma il numero di chiamate di metodi non statici nella classe di aspetto con "call pointcut" era superiore al numero di chiamate di metodo nella classe di aspetto con "esecuzione pointcut" . Non riesco a trovare alcuna interpretazione del perché ciò stia accadendo. Ogni pensiero sul motivo della seconda situazione è apprezzato.
Non sono sicuro ... Consiglierei di stampare alcune informazioni sulle differenze. Forse stampare l'oggetto 'thisJoinPoint'. –