Java 我可以从IntelliJ运行的JUnit测试中排除依赖项吗?
我使用JUnit4/Mockito/PowerMock作为遗留应用程序的单元测试套件。PowerMock依赖于javassist:Java 我可以从IntelliJ运行的JUnit测试中排除依赖项吗?,java,maven,unit-testing,intellij-idea,junit,Java,Maven,Unit Testing,Intellij Idea,Junit,我使用JUnit4/Mockito/PowerMock作为遗留应用程序的单元测试套件。PowerMock依赖于javassist:org.javassist:javassist:jar:3.20.0-GA:test 我们还依赖于Hibernate的旧版本,它引入了javassist的旧版本:javassist:javassist:jar:3.12.0.GA:compile 旧版本的javassist干扰了单元测试,导致了一个神秘的异常:java.io.IOException:invalid co
org.javassist:javassist:jar:3.20.0-GA:test
我们还依赖于Hibernate的旧版本,它引入了javassist的旧版本:javassist:javassist:jar:3.12.0.GA:compile
旧版本的javassist干扰了单元测试,导致了一个神秘的异常:java.io.IOException:invalid constant type:18
当直接通过Maven运行测试时,我可以通过将旧的jar从POM中的单元测试运行中排除来解决问题
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<classpathDependencyExcludes>
<!-- our version of Hibernate pulls in a javassist dependency that is incompatible with Java8
this can be removed once we upgrade Hibernate -->
<classpathDependencyExclude>javassist:javassist</classpathDependencyExclude>
</classpathDependencyExcludes>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
2.19.1
javassist:javassist
但是,在IntelliJ中直接运行测试时,仍然会发生错误。无法从IDE轻松调试测试是一个主要问题,因此如果有什么方法可以让IntelliJ排除旧的依赖关系,我会很高兴,直到我们最终可以升级Hibernate依赖项。仅在maven surefire插件配置中直接从依赖项中排除依赖项……不幸的是,在使用较新版本的Javassist时,实际的生产代码不起作用。在升级Hibernate版本之前,我们一直需要在编译时使用旧的Javassist依赖项。对于稍后发现此问题的任何人,jetbrains上存在一个与此问题相关的活动问题: