【问题标题】:AspectJ + Junit + Maven + Java8AspectJ + Junit + Maven + Java8
【发布时间】:2015-08-09 07:19:03
【问题描述】:

我遵循了这个SO question 并尝试为java8 实现它。我的项目不是春季项目。

方面

@Aspect
public class MethodLogger {
    @Pointcut("execution(@org.junit.Test * *())")
    public void testMethodEntryPoint() {}

    @Before("testMethodEntryPoint()")
    public void executeBeforeEnteringTestMethod() {
        System.out.println("EXECUTE ACTION BEFORE ENTERING TEST METHOD");
    }

    @After("testMethodEntryPoint()")
    public void executeAfterEnteringTestMethod() {
        System.out.println("EXECUTE ACTION AFTER ENTERING TEST METHOD");
    }
}

JUnit 测试

@RunWith(JUnit4.class)
public class POSTaggerTest {    
    @Test
    public void test() {
        ...
    }
}

POM.xml

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.7</version>
        <configuration>
            <aspectLibraries>
                <aspectLibrary>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                </aspectLibrary>
            </aspectLibraries>
            <!--  java version -->
            <complianceLevel>1.8</complianceLevel>
            <source>1.8</source>
            <target>1.8</target>
            <!-- End :  java version -->
            <verbose>true</verbose>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>compile</goal>
                    <goal>test-compile</goal>
                </goals>
                <configuration>
                    <showWeaveInfo>true</showWeaveInfo>
                </configuration>
            </execution>
        </executions>
    </plugin>
:
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.8.6</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.2</version>
</dependency>

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.7</version>
    <type>maven-plugin</type>
</dependency>

我没有看到任何错误。我错过了什么吗?还是有什么错误的神器?当我运行 junit 测试时,我想要什么,所有方面都可以正常工作。

【问题讨论】:

  • 您实际看到了什么?您在test-compile 阶段看到编织信息了吗?发布命令的输出。
  • 好吧!!我正在从 Eclipse 运行 junit 测试,它是绿色的,但命令提示符上没有我可以共享的内容。

标签: maven junit java-8 aspectj aspectj-maven-plugin


【解决方案1】:

你想重现的情况是这样的:

  • 有一个带有方面的 Maven 模块。它使用 AspectJ Maven 插件编译。
  • 还有一个包含实际应用程序和测试代码的模块。它也是用 AspectJ Maven 编译的,这次将第一个模块称为方面库。

你正在做的是:

  • 您只有一个模块。这本身不是问题,因为如果您希望仅在此模块上应用方面,很容易将方面和 Java 代码保留在同一个模块中。
  • 但是现在您将 JUnit 声明为方面库。为什么?它不包含任何方面。您应该删除该声明。

【讨论】:

  • 我尝试删除该声明。不幸的是,它没有帮助。
  • 那么请提供SSCCE,最好在 GitHub 上。如果我能重现这个问题,我可能会帮助你。
  • 是的,让我上传,我会尽快分享链接.. 谢谢
猜你喜欢
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 2021-12-13
  • 1970-01-01
  • 2011-12-20
  • 2010-11-12
相关资源
最近更新 更多