【问题标题】:AspectJ inside a testing framework测试框架中的 AspectJ
【发布时间】:2021-04-12 02:23:38
【问题描述】:

我正在尝试应用一个横切关注点,它使用 AspectJ 和一个名为 Katalon 的测试框架进行记录,该框架使用 Groovy 和 Java。我发现这里最适合的编织类型是加载时编织,它需要一个 META-INF 文件夹和一个 Aop.xml。我试图将我的 aop.xml 放在多个地方,但我认为 aspectj 无法找到它。 这是我项目的结构:

这是我的 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");
    }
}

【问题讨论】:

  • 欢迎来到 SO。下次写问题时请小心,您的内联图像不可见。我为您解决了这个问题,并为您的代码 sn-ps 添加了语法突出显示。

标签: java aop aspectj katalon-studio aspectj-maven-plugin


【解决方案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 或文件系统路径名。我在here 之前回答了同样的问题,并且刚刚更新了一些细节。

【讨论】:

  • 感谢您的回复。我已经尝试过您提到的方法,但效果不佳。对于 VM 参数,这些是正确的
  • -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
  • 是的,我想在我的评论中提到我要做一个 MCVE,但我想先问我的经理然后我误按了输入
  • 如果可以的话,我会把我的github代码贴在这里,谢谢。
  • 仅供参考,我删除了我以前的 cmets 以更新我的答案,因为 SO 不是一个讨论论坛,并且在问题或答案中格式化也更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
相关资源
最近更新 更多