AspectJ + Junit + Maven - pointcut распознается в тестах, но генерируется исключение NoSuchMethodError: aspectOf ()
Я следил почти за всеми вопросами JUnit + Maven + AspectJ здесь, и даже я уверен, что все настроено правильно, я не могу проверить это.
У меня есть модуль Maven только с одним аспектом:
@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");
}
}
Очень просто. Все, что я хочу сделать, это сделать что-то до и после каждого выполнения любого метода тестирования в моем тестовом проекте, который помечен.@Test
Теперь я используюaspectj-maven-plugin
в моем как это:
org.codehaus.mojo
aspectj-maven-plugin
1.4
my.package
with-aspects
1.6
1.6
test-compile
true
1) у меня нетcompile
цель в потому что у меня нет занятий в
src/main/java
(тот'это правда, и это нормально, я знаю, что я делаю)
2) у меня есть
org.aspectj
aspectjrt
1.7.3
org.aspectj
aspectjweaver
1.7.3
в моем раздел. Ничего более в отношении аспекта.
3) Я уверен, что мои классы тестирования распознаются aspectj, потому что я вижу, что точки соединения были рекомендованы. Я вижу:
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.7.3 вместо 1.6.11, это сообщение появилось у меня во время обработки точек соединения:expected 1.6.11 found 1.7.3
, Я думаю, это сообщение отaspectj-maven-plugin
версии 1.4, я не знаю, когда выйдет 1.5, чтобы избавиться от этого. Какие версии совместимы?
5) Мой "код" выглядит так :)
@RunWith(JUnit4.class)
public class TestClass() {
@Test
public void test01(){
}
}
6) У меня 1.6.0_39 Oracle Java компилятор, я компилирую все с 1.6 (цель, источник .. все)
Итак, аспекты признаны, применены, я собираюсь выполнить тесты, какmvn clean test
но все, что я получаю, это:
java.lang.NoSuchMethodError:
my/aspect/AssertionAspect.aspectOf()Lmy/aspect/AssertionAspect;
и довольно длинная трассировка стека.
у меня нетлюбой Понять, что может быть не так, правда.