java - 从 Java 8 迁移到 Java 11 的单元测试失败了

标签 java eclipse maven junit classpath

我正在将我的项目从 Java 8 迁移到 Java 11。所以我使用了 Spring 5.1.0、Java 11、Eclipse 4.16 和 Tomcat 9。我能够成功构建源代码。但是当涉及到测试时,他们就失败了。
这是我在 pom.xml 中用于测试的内容。

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
   <scope>test</scope>
   <type>jar</type>
</dependency>
<dependency>
   <groupId>org.mockito</groupId>
   <artifactId>mockito-core</artifactId>
   <version>2.27.0</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.powermock</groupId>
   <artifactId>powermock-module-junit4</artifactId>
   <version>2.0.2</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.powermock</groupId>
   <artifactId>powermock-api-mockito2</artifactId>
   <version>2.0.2</version>
   <scope>test</scope>
</dependency> 
并且我的测试用例在 Java 8 中使用上述依赖项运行得非常好。但是当我将代码迁移到 Java 11 时,我收到以下异常。
ERROR: org.springframework.test.context.TestContextManager - Caught exception while allowing 
TestExecutionListener 
[org.springframework.test.context.support.DependencyInjectionTestExecutionListener@54e063d] to 
prepare test instance [com.test.SomeTest2@4293943]

java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DefaultTestCDependencyInjectionTestExecutionListenerontext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DefaDefaultTestCDependencyInjectionTestExecutionListenerontextultTestContext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:312) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
我的示例测试类结构
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:test-context.xml"})
public class SomeTestClass {
   ...
}
由于提到的异常,这正在失败。但是,我做了一些研究并找到了一种解决方法,即
更改为:
@ContextConfiguration(locations = {"classpath:test-context.xml"})
对此:
@ContextConfiguration(locations = {"classpath*:/spring/test-context.xml"})
它有效。但问题是我不允许编辑源代码。如何实现?

最佳答案

如果包含“spring”目录的目录在您的类路径中,而不是“spring”目录本身,那么这不是“解决方法”,而是“修复”。如果不允许您更改任何内容,那么您也无法修复任何内容。

关于java - 从 Java 8 迁移到 Java 11 的单元测试失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65937262/

相关文章:

java - 如何在 Spring REST API 响应中连接 Elasticsearch 的结果

java - 列出所有 Lotus Notes 数据库

java - 有没有办法让 eclipse 报告一般的 "catch (Exception e)"作为错误/警告(在 java 中)?

eclipse - eclipse 中的 java 构建路径上的编译警告设置在 maven "update project"之后恢复

java - Eclipse 和 SVN 中的 Maven Multimodul 项目

java - 如何向所有人开放端点?

java - "URI is not registered"在 XHTML 页面中使用 http ://xmlns. jcp.org/jsf/html"

java - 如何在Windows上设置Java路径?

java - Maven 无法解决与某些特定版本的 jar 的依赖关系

java - 无法编译 java doclet 程序,获取包 com.sun.javadoc 不存在