java - Intellij 不会使用加载时编织进行单元测试吗?

标签 java spring maven unit-testing intellij-idea

我正在使用 Intellij 14.1.4 Ultimate,并尝试运行单元测试。当直接从 Maven 3.3.1 调用时,此测试运行良好。但是当我尝试从 Intellij 的 JUnit 配置运行它时,它完全失败,说它无法初始化加载时间编织器。我对此感到困惑,因为它应该运行完全相同的测试。如果您查看 Intellij 命令行,它会加载正确的 Spring jar,但 Spring jar 会对 Intellij 使用的任何类加载器犹豫不决。任何人都可以找出问题所在以及如何解决它吗?

Maven 输出(Intellij 输出进一步向下):

mvn -Dtest=AccountRequestBaseSIDTest test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProject Online (Domain) DEV-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ MyProjectDomain ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] >>> hibernate3-maven-plugin:2.2:hbm2ddl (hsql) > process-resources @ MyProjectDomain >>>
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\wor
kspace_frag2\FCO\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] <<< hibernate3-maven-plugin:2.2:hbm2ddl (hsql) < process-resources @ MyProjectDomain <<<
[INFO]
[INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (hsql) @ MyProjectDomain ---
[INFO] Hibernate 3.3.1.GA
[INFO] hibernate.properties not found
[INFO] Bytecode provider name : javassist
[INFO] using JDK 1.4 java.sql.Timestamp handling
[INFO] No hibernate configuration file loaded.
[INFO] Configuration Properties file loaded: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\src\main\resources\properties\hibernate-hsql.properties
[INFO] Using dialect: org.hibernate.dialect.HSQLDialect
[INFO] Running hbm2ddl schema export
[INFO] writing generated schema to file: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\classes\database\MyProject.hsql
[INFO] schema export complete
[INFO]
[INFO] >>> hibernate3-maven-plugin:2.2:hbm2ddl (mysql) > process-resources @ MyProjectDomain >>>
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\wor
kspace_frag2\FCO\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] <<< hibernate3-maven-plugin:2.2:hbm2ddl (mysql) < process-resources @ MyProjectDomain <<<
[INFO]
[INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (mysql) @ MyProjectDomain ---
[INFO] No hibernate configuration file loaded.
[INFO] Configuration Properties file loaded: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\src\main\resources\properties\hibernate-mysql.properties
[INFO] Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
[INFO] Running hbm2ddl schema export
[INFO] writing generated schema to file: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\classes\database\MyProject.sql
[INFO] schema export complete
[INFO]
[INFO] --- exec-maven-plugin:1.1.1:exec (roles) @ MyProjectDomain ---
[INFO]
[INFO] --- exec-maven-plugin:1.1.1:exec (groups) @ MyProjectDomain ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 56 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ MyProjectDomain ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 203 source files to D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\test-classes
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/services/EmailServiceMockTest.java:[106,42] mergeTemplateIntoString(org.apache.velocity.app.VelocityEngine,java.lang.S
tring,java.util.Map<java.lang.String,java.lang.Object>) in org.springframework.ui.velocity.VelocityEngineUtils has been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/model/GroupStoreTest.java:[106,52] equals(java.lang.Object,java.lang.Object) in org.apache.commons.lang3.ObjectUtils h
as been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/model/GroupStoreTest.java:[130,52] equals(java.lang.Object,java.lang.Object) in org.apache.commons.lang3.ObjectUtils h
as been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/webservices/EPCPartTypeServiceTest.java: Some input files use unchecked or unsafe operations.
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/webservices/EPCPartTypeServiceTest.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.16:test (default-test) @ MyProjectDomain ---
[INFO] Surefire report directory: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running test.services.AccountRequestBaseSIDTest
[AppClassLoader@6da21389] info AspectJ Weaver Version 1.7.3 built on Thursday Jun 13, 2013 at 19:41:31 GMT
[AppClassLoader@6da21389] info register classloader sun.misc.Launcher$AppClassLoader@6da21389
[AppClassLoader@6da21389] info using configuration /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/target/classes/META-INF/aop.xml
[AppClassLoader@6da21389] info using configuration file:/C:/Users/tomw/.m2/repository/org/springframework/spring-aspects/4.1.6.RELEASE/spring-aspects-4.1.6.RELEASE.jar!/META-INF/aop.xml
[AppClassLoader@6da21389] info register aspect com.oreillyauto.aspects.HsqlSanitizer
[AppClassLoader@6da21389] info register aspect org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect
[AppClassLoader@6da21389] info register aspect org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect
[AppClassLoader@6da21389] info register aspect org.springframework.transaction.aspectj.AnnotationTransactionAspect
[AppClassLoader@6da21389] info register aspect org.springframework.cache.aspectj.AnnotationCacheAspect
[AppClassLoader@6da21389] info register aspect org.springframework.cache.aspectj.JCacheCacheAspect
[AppClassLoader@6da21389] error can't determine superclass of missing type org.springframework.cache.jcache.interceptor.JCacheAspectSupport
 [Xlint:cantFindType]
[AppClassLoader@6da21389] warning javax.* types are not being woven because the weaver option '-Xset:weaveJavaxPackages=true' has not been specified
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CachePut
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheResult
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheRemove
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheRemoveAll
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
2015-07-06 13:46:23,776 WARN  [main] net.rubyeye.xmemcached.XMemcachedClient - XMemcachedClient use Text protocol
2015-07-06 13:46:24,080 WARN  [main] com.google.code.yanf4j.core.impl.AbstractController - The Controller started at localhost/127.0.0.1:0 ...
2015-07-06 13:46:24,178 WARN  [Xmemcached-Reactor-0] com.google.code.yanf4j.core.impl.AbstractController - Add a session: 172.18.10.41:11211
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.804 sec - in test.services.AccountRequestBaseSIDTest
2015-07-06 13:46:28,670 WARN  [Thread-12] com.google.code.yanf4j.core.impl.AbstractController - Remove a session: 172.18.10.41:11211

Results :

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29.614 s
[INFO] Finished at: 2015-07-06T13:46:28-07:00
[INFO] Final Memory: 46M/1643M
[INFO] ------------------------------------------------------------------------

Intellij 输出:

"C:\Program Files\Java\jdk1.7.0_79\bin\java" -ea -Dhost=local -XX:MaxPermSize=256m -javaagent:C:\Users\me\.m2\repository/org/springframework/spring-instrument/4.0.6.RELEASE/spring-instrument-4.0.6.RELEASE.jar -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\bin" -classpath "C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\lib\idea_rt.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\lib\util.jar" -Dfile.encoding=windows-1252 com.intellij.rt.execution.CommandLineWrapper C:\Users\me\AppData\Local\Temp\classpath17.tmp com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 test.services.AccountRequestBaseSIDTest @@@method,C:\Users\tomw\AppData\Local\Temp\command.line2
2015-07-06 13:32:13,701 ERROR [main] org.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6eae8c99] to prepare test instance [test.services.AccountRequestBaseSIDTest@590c994]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:122)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
    at com.intellij.rt.execution.junit.JUnitForkedStarter.main(JUnitForkedStarter.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:130)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.weaving.AspectJWeavingEnabler#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [java.net.URLClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:167)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:120)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)
    ... 27 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [java.net.URLClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)

最佳答案

这原来是 Maven 构建问题,我们的一位其他开发人员引入了不同版本的 springframework 来运行。显然,javaagent 编织的失败可能只是由于类路径上存在不同的版本而引起的。呃。

关于java - Intellij 不会使用加载时编织进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255440/

相关文章:

javax.naming.NameNotFoundException : fsmDS not bound

java - 未找到 org.wso2.carbon.identity.oauth.stub Artifact

maven - 在pom文件中进行算术运算

java - JAVA (Android) 中的 OpenCV 绘制轮廓

java - 我无法导入 `java.time` 包

java - 为什么我的 hibernate 关系不起作用?

java - 我是否必须在 Maven 配置文件中复制插件配置?

JAVA - 对象构造函数不接受参数?

java - 值(value)可见性

java - Spring Boot - NoClassDefFoundError : ch/qos/logback/classic/Level