测试框架中的 AspectJ

AspectJ inside a testing framework

我正在尝试应用一个横切关注点,它使用 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");
    }
}

我的第一个猜测是,由于没有看到您的真实项目,您应该将编织器选项移出方面声明部分,如下所示:

<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 之前回答了同样的问题,并且刚刚更新了一些更详细的内容。