Вот MVCE
https://github.com/yami12376/AspectJ
Добавьте
VM arguments
кRun/Debug configuration of Junit test
, в моем случае:-javaagent: C:\aspectjWeaver\spring-instrument-3.0.4.jar
-javaagent:C:\aspectjWeaver\aspectjweaver-1.6.11.jar
В моем случае я добавил это в
JAVA build path
:\target\classes\META-INF
изsrc/main/resources
Беги
Junit test
Если вы удалите aop.xml
, он все еще переплетается type org.*
но, с другой стороны, aop.xml
не должен его плести, потому что он имеет: <include within="com.*"/>
Почему он плетет что-то кроме com.*
?
Наконец, я хочу, чтобы MyAspect
вызывался при запуске Junit test
на основе @Around("execution(* *(..))")
Как вы можете видеть, сейчас он не вызывается.
Я сделал свой пример на основе https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-aj-ltw-first-example.
При запуске JUnit test
я вижу эту ошибку:
[AppClassLoader@18b4aac2] warning parse definitions failed -- (NullPointerException) null
null
java.lang.NullPointerException
at org.aspectj.weaver.loadtime.definition.DocumentParser.resolveEntity(DocumentParser.java:177)
at org.apache.xerces.util.EntityResolverWrapper.resolveEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.resolveEntity(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.aspectj.weaver.loadtime.definition.DocumentParser.saxParsing(DocumentParser.java:158)
at org.aspectj.weaver.loadtime.definition.DocumentParser.parse(DocumentParser.java:123)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions(ClassLoaderWeavingAdaptor.java:272)
at org.aspectj.weaver.loadtime.DefaultWeavingContext.getDefinitions(DefaultWeavingContext.java:130)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:156)
at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340)
at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345)
at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:319)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
at sun.instrument.TransformerManager.transform(Unknown Source)
at sun.instrument.InstrumentationImpl.transform(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Я хочу исправить эту ошибку
aspect
вызывается или нет - не более того. Тем не менее, у моихJunit test
есть только1 purpose
в целом. Как вы думаете, зачем вам нужна библиотека spring-aspects? Вы правы насчет этого MVCE - я мог бы удалить его здесь. Тем не менееerror
происходит. Неважно, есть эта зависимость здесь или нет. - person Kamil Witkowski   schedule 20.03.2017debbuging
с помощью моегоjunit
теста - и это очень удобно для меня. Я не хочу компилировать все свое приложение, чтобы посмотреть, работает ли оно. Это более быстрый способ. - person Kamil Witkowski   schedule 20.03.2017maven project
вEclipse
- и эта ошибка возникла при запуске файлаJunit test
. Я не уверен, что вы хотите, чтобы я сделал. Вероятно, вы не до конца понимаете, что означает АОП и, в частности, как использовать AspectJ. Может быть, вы правы - можете ли вы показать мне лучшее решение? Если неважно, плетете ли вы код, лечащий время компиляции или загрузки, результат один и тот же. Тогда я не против использовать тот или иной метод. - person Kamil Witkowski   schedule 20.03.2017