【问题标题】:Maven tests can't resolve autowired spring boot dependenciesMaven 测试无法解决自动装配的 Spring Boot 依赖项
【发布时间】:2020-12-02 10:18:20
【问题描述】:

Spring Boot 测试在通过 Intellij 执行时运行良好。但是当我使用 Maven 运行测试时,它们会失败。

我使用这个 Maven 测试命令:

mvn test

surefire 插件报告中发现的原因:

----------------------------------- -------------------------- 测试集:com.miro.project.controllers.ProjectTest -------------------------------------------------- ----------------------------- 测试运行:5,失败:0,错误:5,跳过:0,经过时间:7.839 s

在终端中(执行测试后):

IllegalState 无法加载 ApplicationContext

在我的测试中,所有依赖项都加载了 @Autowired 注释。我正在使用 Java8、Maven 3.6.3 和 Spring Boot 2.3.0

有什么想法吗?

谢谢。

【问题讨论】:

  • 在 IDE 中运行测试时检查是否提供了一些环境变量。

标签: java spring-boot maven testing


【解决方案1】:

确保您的所有类都对 Spring 可见。尝试检查每个类是否都有正确的注释(@Component、@Service、@Repository 等)。如果 acmeApplication.java 有你的 main 方法,请确保它包含 @EnableAutoConfiguration 和 @SpringBootApplication 注解。

【讨论】:

  • 这是一个有效的答案,在某些情况下,它可以提供帮助。但就我而言,问题出在其他地方。看我的回答。无论如何,谢谢。
【解决方案2】:

有两个问题:

  1. 当 Maven 运行多个测试时(使用 mvn test 命令) 不知何故弄乱了端口 - 因为这些类中的每一个都是 使用

    TestRestTemplate

因此解决方案是分别调用每个测试类。我创建了一个专门的脚本,并一一调用:

#! /usr/bin/zsh

cd /home/miro/IdeaProjects/acme-project/acme-backend

mvn -Dtest="AcmeControllerTest" test -Dspring.profiles.active=dev
mvn -Dtest="AcmeProfileControllerTest" test -Dspring.profiles.active=dev
mvn -Dtest="RandomControllerTest" test -Dspring.profiles.active=dev
  1. 在运行 Maven 时,我必须明确定义环境:

    -Dspring.profiles.active=dev

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 2021-10-19
    • 1970-01-01
    • 2012-01-12
    • 2020-02-09
    • 2016-09-23
    • 2020-03-24
    • 2017-01-06
    • 2014-07-30
    相关资源
    最近更新 更多