AspectJ внутри среды тестирования

Я пытаюсь применить сквозную задачу, которая ведет журнал с AspectJ и тестовой средой под названием Katalon, которая использует Groovy и Java. Я обнаружил, что наилучший подходящий для этого тип плетения — это плетение во время загрузки, для которого требуется папка META-INF и файл Aop.xml. Я пытался поместить свой aop.xml в несколько мест, но я думаю, что аспект не может его найти. Это структура моего проекта:

введите здесь описание изображения

Вот содержимое моего файла aop.xml:

<aspectj>
    <aspects>
        <aspect name="com.fd.common.aspectName"/>
        <weaver options="-verbose -showWeaveInfo">
            <include within="com.myapp.common.*"/>
        </weaver>
    </aspects>
</aspectj>

А вот и мой аспект:

@Aspect
public class test {
    @org.aspectj.lang.annotation.Before("execution(* *.*(..))")
    public void bef (JoinPoint jp) {
        System.out.println(jp.getSignature());
        System.out.println("Beforeeeeeeeeeeeeeeeeeeeee");
    }
}

person samyyyy23423    schedule 12.04.2021    source источник
comment
Добро пожаловать в СО. Пожалуйста, будьте внимательнее при написании вопросов в следующий раз, ваше встроенное изображение не было видно. Я исправил это для вас, а также добавил подсветку синтаксиса в ваши фрагменты кода.   -  person kriegaex    schedule 13.04.2021


Ответы (1)


Мое первое предположение, не видя вашего реального проекта, заключается в том, что вы должны переместить параметры ткача из раздела объявления аспекта следующим образом:

<aspectj>
    <aspects>
        <aspect name="com.fd.common.aspectName"/>
    </aspects>
    <weaver options="-verbose -showWeaveInfo">
        <include within="com.myapp.common.*"/>
    </weaver>
</aspectj>

Если это не поможет, мне нужна дополнительная информация. Я никогда раньше не использовал Katalon, поэтому мне нужно проверить точную настройку вашего проекта - конечно, не ваш полный исходный проект, если он проприетарный. Но, пожалуйста, подготовьте MCVE, воспроизводящую проблему, опубликуйте его на GitHub, и я смогу посмотреть на вас. Мне нужно посмотреть, как вы вызываете java и что записывается в консоль.


Обновление: возник дополнительный вопрос о том, как использовать системное свойство org.aspectj.weaver.loadtime.configuration для указания на альтернативный URL-адрес ресурса или путь к файловой системе. Я ответил на тот же вопрос раньше здесь и только что обновил его, добавив некоторые подробности.

person kriegaex    schedule 13.04.2021
comment
Спасибо за ваш ответ. Я пробовал то, что вы упомянули, но это тоже не работает. Для аргументов VM эти правильные - person samyyyy23423; 13.04.2021
comment
-Dorg.aspectj.weaver.loadtime.configuration=/Users/sam/Downloads/myProject_V2.7.6/META-INF/aop.xml -javaagent:/Users/sam/Downloads/aspectjweaver-1.9.6.jar - person samyyyy23423; 13.04.2021
comment
Да, я хотел упомянуть в своем комментарии, что собираюсь пройти MCVE, но я хочу сначала спросить своего менеджера, а затем по ошибке нажал Enter. - person samyyyy23423; 13.04.2021
comment
Я опубликую свой код github здесь, если все в порядке, спасибо. - person samyyyy23423; 13.04.2021
comment
К вашему сведению, я удалил свои предыдущие комментарии в пользу обновления своего ответа, потому что SO не является дискуссионным форумом, и форматирование также проще в вопросе или ответе. - person kriegaex; 13.04.2021
comment
Ваш обновленный ответ помог, спасибо! - person samyyyy23423; 13.04.2021