Hemen hemen tüm JUnit + Maven + AspectJ sorularını burada izledim ve her şeyin düzgün ayarlandığından bile eminim, test edemiyorum o.AspectJ + Junit + Maven - pointcut testlerde kabul edildi ama NoSuchMethodError: aspectOf() istisnası atıldı
@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");
}
}
Çok oldukça basit:
Ben sadece bir yönü ile bir Maven modülü var. Tek yapmak istediğim, test projemde@Test
no'lu açıklamasının herhangi bir test yönteminin uygulanmasından önce ve sonra bir şeyler yapmak. Şimdi
, böyle benim <build>
yılında aspectj-maven-plugin
kullanıyorum:
<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) Ben src/main/java
(bu doğru oldu 'hiçbir sınıfları çünkü <execution>
hiçbir compile
amacı var, bildiklerimi Ben)
2) benim <dependencies>
secti içinde
<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>
sahip yapıyorum üzerinde. Aspectj ile ilgili daha fazla bir şey yok.
3) Ben bu noktalar tavsiye edildi katılmak gördükleri için benim test sınıfları AspectJ tarafından tanınan eminim. Gördüğüm kadarıyla:
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))
Aynı şey tavsiye sonrası için de geçerlidir. katılmak noktaları tedavi edildi ise sürüm 1.7.3 yerine 1.6.11 denedik
4), bu mesaj bana göründü: expected 1.6.11 found 1.7.3
. Bu sürüm 1.4'ün aspectj-maven-plugin
'undan bir mesaj olduğunu tahmin ediyorum, 1.5'in ne zaman kurtulacağını bilmiyorum. Hangi sürümler uyumludur? Bu :) gibi
5) My "kod" görünüyor
@RunWith(JUnit4.class)
public class TestClass() {
@Test
public void test01(){
}
}
6) Ben 1.6 (hedefe, kaynak ile herşeyi 1.6.0_39 Oracle Java derleyicisi derleme am var .. hepsi)
Yani, yönleri, uygulanan, ben mvn clean test
gibi testleri yürütmek için gidiyorum tanınan ama olsun tüm şudur:
java.lang.NoSuchMethodError:
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;
ve oldukça uzun StackTrace.
Gerçekten yanlış ne olabileceğini herhangi ipucu yok.
java için çalışıyor 8 de mi? –