Ho seguito quasi tutte le domande di JUnit + Maven + AspectJ qui e anche io sono abbastanza sicuro di aver impostato tutto correttamente, non riesco a testare esso.AspectJ + Junit + Maven - collegamento di punti riconosciuto nei test ma NoSuchMethodError: aspectOf() eccezione generata
Ho un modulo di Maven con solo un aspetto:
@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");
}
}
Molto piuttosto semplice. Tutto quello che voglio fare è quello di fare qualcosa prima e dopo ogni esecuzione di qualsiasi metodo di prova nel mio progetto di test che è annotato con @Test
.
Ora, io sto usando aspectj-maven-plugin
nel mio <build>
come questo:
<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) non ho compile
obiettivo in <execution>
perché non ho lezioni di src/main/java
(che è vero ed è ok, lo so cosa sto facendo)
2) devo
<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>
nei miei <dependencies>
secti sopra. Niente di più per quanto riguarda AspectJ.
3) Sono sicuro che le mie lezioni di prova sono riconosciuti da aspectj perché vedo che uniscono stato consigliato punti. Vedo:
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))
Stesse riserve per un consiglio postvendita.
4) quando ho provato la versione 1.7.3 invece che 1.6.11, questo messaggio è apparso a me mentre unirsi punti sono stati trattati: expected 1.6.11 found 1.7.3
. Credo che sia un messaggio da aspectj-maven-plugin
di versione 1.4, non so davvero quando 1.5 sarà comunicato per sbarazzarsi di questo. Quali versioni sono compatibili?
5) Il mio "codice" si presenta come questo :)
@RunWith(JUnit4.class)
public class TestClass() {
@Test
public void test01(){
}
}
6) Ho 1.6.0_39 Oracle Java compilatore, io sono la compilazione di tutto con 1.6 (target, fonte .. tutto)
Così, gli aspetti riconosciuti, applicato, ho intenzione di eseguire i test come mvn clean test
ma tutto quello che ottiene è che:
java.lang.NoSuchMethodError:
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;
e piuttosto lunga stacktrace.
Non ho qualsiasi indizio che cosa potrebbe essere sbagliato, davvero.
funziona per java 8 anche tu? –