AspectJ + Junit + Maven + Java8

时间:2015-08-09 07:19:04

标签: maven junit java-8 aspectj

我遵循了这个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测试时,我想要的是,所有方面都可以正常工作。

1 个答案:

答案 0 :(得分:0)

您要重新创建的情况如下:

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

你正在做的是:

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