AspectJ + Junit + Maven - punkt odniesienia rozpoznany w testach, ale NoSuchMethodError: zgłoszony wyjątek aspectOf ()

Śledziłem prawie wszystkie pytania JUnit + Maven + AspectJ tutaj, a nawet jestem pewien, że wszystko zostało poprawnie ustawione, nie mogę go przetestować.

Mam moduł Maven z jednym aspektem:

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

Bardzo prosty. Wszystko, co chcę zrobić, to zrobić coś przed i po każdym wykonaniu dowolnej metody testowej w moim projekcie testowym, który jest opatrzony komentarzem@Test.

Teraz używamaspectj-maven-plugin w moim<build> lubię to:

<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) Nie mamcompile cel w<execution> ponieważ nie mam zajęć wsrc/main/java (to prawda i jest dobrze, wiem co robię)

2) Mam

<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>

w moim<dependencies> Sekcja. Nic więcej o aspekcie.

3) Jestem pewien, że moje klasy testowe są rozpoznawane przez aspektj, ponieważ widzę, że zalecane były punkty łączenia. Widzę:

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))

To samo dotyczy późniejszej porady.

4) gdy próbowałem wersji 1.7.3 zamiast 1.6.11, ten komunikat pojawił się podczas przetwarzania punktów łączenia:expected 1.6.11 found 1.7.3. Myślę, że to wiadomość odaspectj-maven-plugin wersji 1.4 nie wiem, kiedy 1.5 zostanie wydane, aby się tego pozbyć. Jakie wersje są kompatybilne?

5) Mój „kod” wygląda tak :)

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

    @Test
    public void test01(){
    }
}

6) Mam kompilator Java 1.6.0_39 Oracle, kompiluję wszystko z 1.6 (cel, źródło .. wszystko)

Tak więc, aspekty uznane, zastosowane, zamierzam wykonać testy takie jakmvn clean test ale wszystko, co dostaję, to:

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

i całkiem długi stacktrace.

nie mamkażdy naprawdę, co może być nie tak.

questionAnswers(1)

yourAnswerToTheQuestion