【问题标题】:How to restrict autos scanning of src/test/java in Spring Boot?如何限制 Spring Boot 中 src/test/java 的自动扫描?
【发布时间】:2017-03-17 09:26:41
【问题描述】:

我按照“Mastering Spring MVC”一书创建了一个简单的 Web 应用程序。一切正常,但是,在测试章节中,我创建了两个带有 @Primary 注释的 bean。 1. ProviderSignInController 和 2. 我的搜索服务类的 Impl。这两个都在包 src/test/java 中。

这里的问题是,如果我部署我的应用程序,即使那样,这两个 bean 也会出现,我无法使用我的实际身份验证和搜索服务。

我没有收到任何错误或异常。我想知道在我的开发环境中部署应用程序时,在测试和实际实现时自动注入我的模拟/存根的最佳方法是什么。

源代码链接是here。谢谢。

【问题讨论】:

  • 这意味着您的构建过程中存在错误。 src/test/java 目录中的类不应包含在包目标的结果中。这不会在正常的 Maven 构建中发生。
  • 我正在使用 Gradle。我会检查的。我没有做任何特定的配置来避免测试。

标签: java spring spring-mvc spring-boot spring-test


【解决方案1】:

我建议将@Profile("PRODUCTION")@Bean 一起用于您的真实/生产bean/类和@Profile("!PRODUCTION") 与您的测试bean/类,而不是@Primary。然后,在运行时指定活动配置文件

-Dspring.profiles.active=PRODUCTION, ...

【讨论】:

    【解决方案2】:

    问题在于我执行应用程序的方式。

    当我直接从 eclipse(以 Spring Boot 应用程序运行)启动应用程序时,测试包含在构建中,因为它们存在于类路径中。

    我修改了我的方法,现在我正在使用 gradle build (gradle bootRun) 来启动我的应用程序。这解决了问题。感谢@DwB 提供提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-06
      • 2017-04-25
      • 2018-08-30
      • 1970-01-01
      • 2014-10-08
      • 2012-11-22
      • 2021-01-22
      • 2014-06-18
      相关资源
      最近更新 更多