मैंने लगभग सभी जुनीट + मेवेन + एस्पेक्टजे प्रश्नों का पालन किया है और यहां तक कि मुझे पूरा यकीन है कि मेरे पास सब कुछ ठीक से सेट है, मैं परीक्षण करने में असमर्थ हूं यह।AspectJ + Junit + Maven - पॉइंटकट परीक्षणों में पहचाना जाता है लेकिन NoSuchMethodError: aspectOf() अपवाद फेंक दिया
@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");
}
}
बहुत बहुत सरल:
मैं सिर्फ एक पहलू के साथ एक Maven मॉड्यूल है। मैं बस इतना करना चाहता हूं कि मेरी टेस्ट प्रोजेक्ट में किसी भी परीक्षण विधि के प्रत्येक निष्पादन से पहले और बाद में कुछ करना है, जिसे @Test
के साथ एनोटेट किया गया है।
अब, मैं अपने <build>
में aspectj-maven-plugin
उपयोग कर रहा हूँ इस तरह:
<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) मैं <execution>
में कोई compile
लक्ष्य है क्योंकि मैं src/main/java
(यह सच है और यह ठीक है में कोई कक्षा नहीं है, मुझे पता है कि मैं कर रहा हूँ)
2) मैं
<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>
मेरी
<dependencies>
secti में
है पर। पहलू के बारे में और कुछ नहीं।
3) मुझे यकीन है कि मेरे परीक्षण वर्ग पहलू द्वारा पहचाने जाते हैं क्योंकि मुझे लगता है कि शामिल बिंदुओं की सलाह दी गई थी। मैं देखता हूं:
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))
सलाह के बाद भी यही है।
4) जब मैंने 1.6.11 के बजाय संस्करण 1.7.3 की कोशिश की, तो यह संदेश मुझे दिखाई दिया, जबकि अंक शामिल हुए थे: expected 1.6.11 found 1.7.3
। मुझे लगता है कि यह संस्करण 1.4 के aspectj-maven-plugin
से एक संदेश है, मुझे वास्तव में पता नहीं है कि 1.5 से इसे छुटकारा पाने के लिए रिलीज़ किया जाएगा। कौन से संस्करण संगत हैं?
5) मेरे "कोड" लगता है कि इस तरह :)
@RunWith(JUnit4.class)
public class TestClass() {
@Test
public void test01(){
}
}
6) मैं 1.6.0_39 ओरेकल जावा, मैं 1.6 (लक्ष्य, स्रोत के साथ सब कुछ संकलन रहा है .. सब)
तो, पहलुओं को मान्यता दी, लागू किया, मैं mvn clean test
तरह परीक्षण निष्पादित करने के लिए जा रहा हूँ, लेकिन सभी मैं है जो:
java.lang.NoSuchMethodError:
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;
और बहुत लंबा स्टैकट्रेस।
मेरे पास कोई संकेत नहीं है कि वास्तव में क्या गलत हो सकता है।
क्या यह जावा के लिए काम कर रहा है 8 भी? –