AspectJ + Junit + Maven - Pointcut in Tests erkannt, aber Ausnahme NoSuchMethodError: aspectOf () ausgelöst

Ich habe hier fast alle Fragen zu JUnit + Maven + AspectJ beantwortet und bin mir ziemlich sicher, dass ich alles richtig eingestellt habe. Ich kann es nicht testen.

Ich habe ein Maven-Modul mit nur einem Aspekt:

@Aspect
public class AssertionAspect {

    @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");
    }
}

Sehr hübsch einfach. Alles, was ich tun möchte, ist, vor und nach jeder Ausführung einer Testmethode in meinem Testprojekt etwas zu tun, das mit Anmerkungen versehen ist@Test.

Jetzt benutze ichaspectj-maven-plugin in meinem<build> so was:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>aspectj-maven-plugin</artifactId>
      <version>1.4</version>
      <configuration>
        <aspectLibraries>
          <aspectLibrary>
            <groupId>my.package</groupId>
            <artifactId>with-aspects</artifactId>
          </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>test-compile</goal>
          </goals>
          <configuration>
            <showWeaveInfo>true</showWeaveInfo>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

1) Ich habe keinecompile Ziel in<execution> weil ich keinen unterricht habesrc/main/java (das stimmt und es ist ok, ich weiß was ich tue)

2) Ich habe

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.7.3</version>
</dependency>

in meinem<dependencies> Sektion. Nichts mehr in Bezug auf aspectj.

3) Ich bin sicher, dass meine Testklassen von aspectj anerkannt werden, da ich sehe, dass Join Points empfohlen wurden. Aha:

Join point 'method-execution(xyz)' in Type 'blabla' 
(AppTestCase.java:124) advised by before advice from 
'blabla' (my-aspects jar.jar!AssertionAspect.class(from AssertionAspect.java))

Gleiches gilt für nach Beratung.

4) Als ich Version 1.7.3 anstelle von 1.6.11 ausprobierte, erschien mir diese Meldung, während Join-Punkte behandelt wurden:expected 1.6.11 found 1.7.3. Ich denke, es ist eine Nachricht vonaspectj-maven-plugin Von Version 1.4 weiß ich nicht wirklich, wann 1.5 veröffentlicht wird, um dieses Problem zu beheben. Welche Versionen sind kompatibel?

5) Mein "Code" sieht so aus :)

@RunWith(JUnit4.class)
public class TestClass() {

    @Test
    public void test01(){
    }
}

6) Ich habe 1.6.0_39 Oracle Java Compiler, ich kompiliere alles mit 1.6 (Ziel, Quelle .. alle)

Also, Aspekte erkannt, angewendet, werde ich Tests wie ausführenmvn clean test aber alles was ich bekomme ist das:

java.lang.NoSuchMethodError: 
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;

und ziemlich lange Stacktrace.

ich habe nichtirgendein Ahnung, was wirklich falsch sein könnte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage