- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在 stackoverflow.com 上提出的第一个问题。
最近我一直在寻找一种方法来更改 Spring Boot (2.x) 命名其通过 @Component (etc) 注释创建的 bean 的方式。
我找到了SpringApplicationBuilder类,值得庆幸的是,它允许注入(inject)自定义 bean 名称生成器:
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.beanNameGenerator(customBeanNameGenerator)
.run(args);
}
}
但问题是,尽管该解决方案适用于生产,但在 JUnit 4.0 单元测试中却不起作用,其中 JUnit Runner SpringRunner出于测试目的重新创建 Spring Context - 在这种情况下,不会使用 SpringApplicationBuilder,因此我们的应用程序启动会失败,因为 Autowiring 多 bean 候选者问题。
@RunWith(SpringRunner.class)
@SpringBootTest(classes= {Application.class} )
public class SomeControllerTest {
...
}
是否有任何优雅的方法可以使单元测试也使用 SpringApplicationBuilder?
问候。
最佳答案
@SpringBootApplication 的属性“classes”仅使用类的注释。因此,构建 SpringApplication 的代码在运行测试时不起作用。
如果你想解决这个问题,可以尝试其他方法,比如在@ComponentScan中指定nameGenerator
@ComponentScan(nameGenerator = CustomBeanNameGenerator.class)
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.run(args);
}
}
确保您的 CustomBeanNameGenerator 类有一个空的构造函数。
ps:英语不是我的母语;请原谅输入错误。
关于java - 在与 JUnit SpringRunner 的集成测试期间未加载 SpringApplicationBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49187071/
我需要通过创建 Cucumber 集成测试来测试我的 Spring 应用程序代码。我正在使用 SpringApplicationBuilder 在触发实际逻辑之前启动我的应用程序,并使用以下语法来执行
我正在开发一个现有的项目,它应该可以正常工作,没有问题,我想做的第一步是在本地运行它,但我遇到了这个错误: Exception in thread "main" java.lang.Error: Un
我正在阅读 Spring 微服务教程,其中包含以下行: new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
这是我在 stackoverflow.com 上提出的第一个问题。 最近我一直在寻找一种方法来更改 Spring Boot (2.x) 命名其通过 @Component (etc) 注释创建的 bea
我已经为Spring Boot 1.5应用程序配置了Gradle。它可以在Spring Tool Suite中正常运行,但是gradlew build创建的jar文件在BOOT-INF文件夹中没有ja
我正在编写简单的应用程序以熟悉 spring 批处理。我想学习 spring 批处理管理,但我发现它已被弃用,所以我必须改用 spring 云数据流。 我找到了一个关于 spring 云数据的教程,并
我在 https://start.spring.io/ 上使用了起始页生成包含多个模块的项目 当我尝试运行测试时,我得到了很多日志信息,但这些行似乎很关键 10:29:33.198 [main] DE
如果我切换到新版本的SpringBoot,我在启动应用程序时会得到上面的错误信息。这是为什么? 最美好的祝愿史蒂文 pom.xml 4.0.0 de.xyz.microservice spring
我是一名优秀的程序员,十分优秀!