代码之家  ›  专栏  ›  技术社区  ›  Igor Vlasuyk

如何用AspectJ Maven插件运行我的Java测试

  •  0
  • Igor Vlasuyk  · 技术社区  · 6 年前

    我想通过AOP记录我的测试。我在aspectlogger类中定义了切入点和建议。当我运行aspectj:test-compile时,在输出中我看到向测试添加了建议。喜欢

    [INFO] Join point 'method-execution(void Back_end_task.APITest.test())' in Type 'Back_end_task.APITest' (APITest.java:22) advised by before advice from 'AspectLogger' (AspectLogger.java:26)
    

    但是当我跑的时候 mvn clean test 在输出中,我看到如下错误:

    java.lang.NoSuchMethodError: AspectLogger.aspectOf()LAspectLogger;
        at Back_end_task.APITest.test(APITest.java:23)
    

    通过搜索这个问题,我发现我应该将我的项目作为依赖项添加到 <aspectLibraries> aspectj maven插件的bloc,并将我的项目的依赖项添加到 <dependencies> pom.xml的bloc。但问题是:

    [FATAL] 'dependencies.dependency MyTraining:project:1.0-SNAPSHOT' for MyTraining:project:1.0-SNAPSHOT is referencing itself
    

    这是我的链接 project

    请给我建议。我错过了什么?我做错什么了?我想学习如何使用方面。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Pang Ajmal PraveeN    6 年前

    构建中的问题是使用编译时编织,然后使用加载时编织代理运行测试。后者是不必要的。 This commit 修复生成:

    --- pom.xml (revision 8aa7b98f5c6c15676580783c2f351c253212fbee)
    +++ pom.xml (revision 72f37c4377b7189578f6afd5c45473efd8c63bc4)
    @@ -89,12 +89,6 @@
                 <version>${aspectj.version}</version>
             </dependency>
    
    -        <dependency>
    -            <groupId>org.aspectj</groupId>
    -            <artifactId>aspectjweaver</artifactId>
    -            <version>${aspectj.version}</version>
    -        </dependency>
    -
             <!--<dependency>
                 <groupId>MyTraining</groupId>
                 <artifactId>project</artifactId>
    @@ -156,9 +150,6 @@
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>2.20</version>
                     <configuration>
    -                    <argLine>
    -                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
    -                    </argLine>
                         <systemProperties>
                             <property>
                                 <name>allure.results.directory</name>
    @@ -166,13 +157,6 @@
                             </property>
                         </systemProperties>
                     </configuration>
    -                <dependencies>
    -                    <dependency>
    -                        <groupId>org.aspectj</groupId>
    -                        <artifactId>aspectjweaver</artifactId>
    -                        <version>${aspectj.version}</version>
    -                    </dependency>
    -                </dependencies>
                 </plugin>
    
                 <plugin>
    

    我还在你的pom中改进了一些小东西 my GitHub fork 创造了一个 pull request 为你。如果你愿意就接受吧。