0

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

4

1 回答 1

0

您要重新创建的情况是这样的:

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

你正在做的是:

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